FR2559286A1 - Information processing machine for interpretation of logic programming languages - Google Patents

Information processing machine for interpretation of logic programming languages Download PDF

Info

Publication number
FR2559286A1
FR2559286A1 FR8400604A FR8400604A FR2559286A1 FR 2559286 A1 FR2559286 A1 FR 2559286A1 FR 8400604 A FR8400604 A FR 8400604A FR 8400604 A FR8400604 A FR 8400604A FR 2559286 A1 FR2559286 A1 FR 2559286A1
Authority
FR
France
Prior art keywords
memory
parent
cell
cells
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR8400604A
Other languages
French (fr)
Other versions
FR2559286B1 (en
Inventor
Yves Jean Antoine Bekkers
Lucien Francois Ungaro
Bernard Maurice Canet
Olivier Martial Ridoux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Priority to FR8400604A priority Critical patent/FR2559286B1/en
Publication of FR2559286A1 publication Critical patent/FR2559286A1/en
Application granted granted Critical
Publication of FR2559286B1 publication Critical patent/FR2559286B1/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4496Unification in logic programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

An execution processor 10 equipped with a microprogrammable element 16 interacts via a bus 13 with a cellular memory 14, arranged to permit the creation of a trellis as well as that of cells of variable type. The execution processor 10 is microprogrammed for interpretation of a logic programming language such as PROLOG. The execution processor 10 interacts via requests with a memory management processor 12, with which there is associated a memory of the allocation status 15 of the cells of the memory 14. Working in alternate batches, the processor 12 runs through the trellises defined in the memory 14, so as to free the cells which have become unnecessary therein. This freeing is written into the allocation status memory 15.

Description

Machine de traitement de l1information,pour l'interprétation de langages de programmation iogique. Information processing machine for the interpretation of logical programming languages.

L'invention concerne des machines de traitement de l'infor- mation, en particulier pour l'intelligence artificielle.The invention relates to information processing machines, in particular for artificial intelligence.

Les machines informatiques traditionnelles sont conques pour
travailler avec Les langages de programmation å caractère
impératif, basés sur la notion de flu : d'instructions qui modifient explicitement des mémoires On salit que ces langages se prêtent mal à l'expression de traitements formels, dont le besoin est de plus en plus ressenti dans les applications de l'informatique : systèmes experts, conceptiona assistées, analyse et compréhension des langues naturelles et artificielles, notamment.
Traditional computer machines are designed to
working with programming languages å character
imperative, based on the notion of flu: of instructions that explicitly modify memories It is dirty that these languages do not lend themselves well to the expression of formal treatments, whose need is more and more felt in computer applications: expert systems, conceptiona assisted, analysis and understanding of natural and artificial languages, in particular.

Pour de telles applications, des langages de traitement formel ont été développés. Ces derniers se subdivisent en langages de type fonctionnel tels que LISP, basé sur le forma
lisme du lambda-calcul, et en langages de type relationnel, basés sur le formalisme@de la logique des prédicats. L'un de ceux-ci est le langage PROLOG, abréviation de programmation
logique. Ce langage-est décrit dans de nombreux articles et ouvrages, notamment -"A machine - oriented logic based on the resolution principale "J.A. Robinson, Journal of the ACM, Vol. 12, No 1, janvier 1965; -"Les grammaires de métamorphose",A.Colmerauer, Groupe d'intelligence Artificielle, Marseille Lumigny, Novembre 1975; -"PROLOG II",Manuel d'utilisation, M. va Caneghen, Groupe d'intelligence Artificielle, Marseille Lumigny, Janvier 1982; -"Predicate Logic as Programming Language'.'R.A. Kowalski,
IFP North Holland, 1974, pp. 569 à 574.
For such applications, formal processing languages have been developed. These are subdivided into functional type languages such as LISP, based on the forma
lambda-calculus, and in relational-type languages, based on the formalism @ of the logic of predicates. One of these is the PROLOG language, programming abbreviation
logic. This language is described in many articles and books, including: "A machine-oriented logic based on the main resolution" JA Robinson, Journal of the ACM, Vol. 12, No. 1, January 1965; - "Grammars of Metamorphosis", A.Colmerauer, Artificial Intelligence Group, Marseille Lumigny, November 1975; - "PROLOG II", User Manual, Mr. Caneghen goes, Artificial Intelligence Group, Marseille Lumigny, January 1982; - 'Predicate Logic as Programming Language' RA Kowalski,
IFP North Holland, 1974, pp. 569-574.

Les langages de programmation logique, telsPROLOG, ont été jusqu'à présent expérimentés sous une forme purement logicielle, dans laquelle un programme spécial est implanté dans une machine de traitement de l'information de type traditionnel. Sans relever ici les problèmes et imperfections apparus lors de ces expérimentations, il convient de noter qu'une telle mise en oeuvre purement logicielle est peu efficace, au sens du rendement et de la vitesse de travail. Logical programming languages, such as PROLOG, have so far been tested in a purely software form, in which a special program is implemented in a traditional type of information processing machine. Without mentioning here the problems and imperfections arising during these experiments, it should be noted that such a purely software implementation is inefficient, in the sense of performance and speed of work.

La présente invention a essentiellement pour objet d'aboutir au développement industriel d'une machine spécialisée, capable de supporter efficacement la mise en oeuvre, par une programmation plus simple, des langages de programmation logique.The object of the present invention is essentially to lead to the industrial development of a specialized machine capable of efficiently supporting the implementation, by a simpler programming, of logical programming languages.

L'un des buts de l'invention est de dégager une structure de mémoire, ainsi qu'un processeur d'exécution, munie d'un jeu de commandes pour la faire évoluer, l'ensemble présentant un intérêt général pour la rédaction d'interpréteurs de langages de programmation logique. Ceux-ci seront contenus dans un organe programmable du processeur d'exécution. Il ne s'agit pas, cependant, de définir un logiciel qui réalise rait directement l'interprétation d'un langage de programmation logique particulier (dont PROLOG est un exemple).One of the aims of the invention is to provide a memory structure, as well as an execution processor, equipped with a set of commands to make it evolve, the set being of general interest for the writing of interpreters of logical programming languages. These will be contained in a programmable component of the execution processor. It is not a question, however, of defining a software which will realize directly the interpretation of a particular logical programming language (of which PROLOG is an example).

Il convient de noter que, dans le présent texte, ce qu'on appelle "l'utilisateur" n'est pas directement un utilisateur humain, mais un programme particulier destiné à se dérouler dans l'organe programmable, et qui émettra des commandes appartenant au jeu de commandes précité.It should be noted that, in this text, the so-called "user" is not directly a human user, but a particular program intended to take place in the programmable organ, and which will issue commands belonging to the above set of commands.

Un autre but important de l'invention est de fournir, dans une telle machine, un mécanisme permanent, automatique et optimal de récupération de tout élément de mémoire qui ne participe pas à la représentation de l'information accessible à l'uti- lisateur.Another important object of the invention is to provide, in such a machine, a permanent, automatic and optimal mechanism for recovering any memory element which does not participate in the representation of the information accessible to the user.

De manière connue, la machine de traitement de l'information proposée comprend des moyens de traitement et des moyens de mémoire vive interconnectée par un bus.In known manner, the proposed information processing machine comprises processing means and RAM means interconnected by a bus.

Selon un premier aspect général de l'invention, cette machine est remarquable : - en ce que les moyens de mémoire vive comprennent une mémoire formant pile de géniteurs, ordonnée en fonction d'un nombre entier ou niveau, et une mémoire de désignation, constituée de cellules adressables individuellement, à deux champs au moins chacune, chaque champ étant destiné à contenir une information qui est soit un atome ou donnée, soit une référence à une autre cellule, soit une référence à l'un des géniteurs, - un géniteur constituant le point de départ d'un treillis de termes, en contenant lui-meme l'une au moins desdites informations, le treillis de termes pouvant se prolonger par des références successives entre cellules de la mémoire de dés i- gnation, - les cellules ainsi référencées étant soit de type constructeur, leurs champs contenant alors immédiatement chacun l'une desdites informations, soit de type variable, étant mises en attente d'une liaison ultérieure, lors de laquelle les deux champs d'une cellule serviront l'un à associer la variable à l'un des géniteurs, et l'autre à contenir l'une desdites informations, et - en ce que les moyens de traitement comprennent un processeur d'exécution microprogrammé, susceptible d'être associé directement ou indirectement à un organe programmable destiné à recevoir le logiciel d'interprétation, ce processeur d'exécution comprenant en outre un registre de géniteur courant, qui fait référence à l'un des géniteurs de la mémoire formant pile, l'état courant de la machine étant ainsi défini par le contenu de ce registre ainsi que par le contenu de la mémoire de désignation et de la mémoire formant pile de géniteurs.According to a first general aspect of the invention, this machine is remarkable: in that the random access memory means comprise a memory forming a stack of parents, ordered according to an integer or level, and a designation memory, constituted of individually addressable cells, at least two fields each, each field being intended to contain information which is either an atom or datum, a reference to another cell, or a reference to one of the parents, - a constituent parent the starting point of a lattice of terms, containing itself at least one of said information, the lattice of terms being able to be extended by successive references between cells of the de-identification memory, - the cells thus referenced being either of type constructor, their fields then immediately containing each one of said information, or of variable type, being put on hold for a link later where the two fields of a cell will serve one to associate the variable to one of the parents, and the other to contain one of the said information, and in that the processing means comprise a microprogrammed execution processor, which can be associated directly or indirectly with a programmable unit intended to receive the interpretation software, this execution processor furthermore comprising a current spawning register, which refers to one of the spawners of the battery memory, the current state of the machine thus being defined by the contents of this register as well as by the contents of the designation memory and the memory forming the parent stack.

Une définition plus détaillée du jeu de commandes de base suivant lequel le processeur d'exécution est microprogrammé sera donnée plus loin. Il sera également indiqué plus loin comment peuvent être structurées d'une part la mémoire de désignation, d'autre part la mémoire formant pile de géniteurs
Un avantage de l'invention réside en ce que ces deux parties des moyens de mémoire vive peuvent être construites à partir de cellules de taille identique, comprenant dans un exemple préférentiel deux parties de vingt-quatre bits chacune, séparables chacune à leur tour en un champ de quatre bits et un champ de vingt bits.
A more detailed definition of the basic set of commands according to which the execution processor is microprogrammed will be given later. It will also be indicated later how can be structured on the one hand the designation memory, on the other hand the memory forming a stack of parents
An advantage of the invention lies in the fact that these two parts of the random access memory means can be constructed from cells of identical size, comprising in a preferred example two parts of twenty-four bits each, each of which can be separated in turn. four-bit field and a twenty-bit field.

Selon un autre aspect de l'invention, les moyens de traitement sont aussi agencés pour d'une part répondre à des demandes d'allocation de cellules de mémoire, en allouant des cellules de mémoire disponibles et, d'autre part, répondre à une deman de spécifique en effectuant une récupération automatique des cellules contenant des informations devenues inutiles.According to another aspect of the invention, the processing means are also arranged to respond on the one hand to memory cell allocation requests, by allocating available memory cells and, on the other hand, to respond to a request. Deman specific by performing an automatic recovery of cells containing information become useless.

En pratique, ceci peut être réalisé à laide d'un processeur de gestion de mémoire séparé qui dialogue par requêtes avec le processeur d'exécution à travers un organe de communication et de synchronisation.In practice, this can be achieved by using a separate memory management processor that queries into the execution processor through a communication and synchronization device.

Pour son fonctionnement, il est utile que le processeur de gestion de mémoire comprenne un certain nombre de registres affectés en permanence à des tâches particulières. Ces registres seront indiqués plus loin. Il est encore souhaitable de prévoir un mécanisme de verrou entre les deux processeurs, ce qui leur permet une exclusion mutuelle pour l'accès aux moyens de mémoire qu'ils partagent.For its operation, it is useful for the memory management processor to include a number of registers permanently assigned to particular tasks. These registers will be indicated later. It is still desirable to provide a lock mechanism between the two processors, which allows them mutual exclusion for access to the memory means they share.

Selon un autre aspect de liinvention, le processeur de ges tion de mémoire, (séparé ou non),efectue la recupération auto mastique de la manière suivante - exploration d'une partie au moins des treillis de cellules définis par le contenu des moyens de mémoire vive, et utiles par le processeur d'exécution3 en y marquant les cellules en fonction de conditions prédé- terminées, et - ensuite, ramassage des cellules non marquées, qui sont maintenant considérées comme libres.According to another aspect of the invention, the memory management processor, (separated or not), performs auto-masking recovery in the following manner - scanning at least part of the cell lattices defined by the contents of the memory means alive, and useful by the execution processor3 by marking the cells there according to predefined conditions, and - then, picking up the unmarked cells, which are now considered free.

Selon un autre aspect particulièrement intéressant de l'invention, une mémoire de statuts d'allocation est associée au processeur de gestion de mémoire. Cette mémoire de statuts d'allocation comprend un nombre d'éléments au moins égal à celui des cellules de la mémoire de désignation, de préférence autant d'éléments qu'il y a de cellules en tout dans les moyens de mémoire vive. According to another particularly advantageous aspect of the invention, an allocation status memory is associated with the memory management processor. This allocation status memory comprises a number of elements at least equal to that of the cells of the designation memory, preferably as many elements as there are cells in all in the RAM means.

Chacun de ces éléments de la mémoire de statuts d'allocation est susceptible d'états différents comprenant l'état libre, et un état marqué au moins. De préférence, au lieu d'un état marqué, on prévoit un premier et un second état non libres, définissant respectivement l'affectation de la cellule correspondante des moyens de mémoire vive dans une première et une seconde fournée.Each of these elements of the allocation status memory is capable of different states including the free state, and a flagged state at least. Preferably, instead of a marked state, a first and a second non-free state are provided, respectively defining the assignment of the corresponding cell of the random access memory means in a first and a second batch.

Le processeur de gestion de mémoire effectue alors le marquage des cellules de la mémoire vive par une inscription dans l'élément correspondant de la mémoire de statuts d'allocation.The memory management processor then performs the marking of the cells of the random access memory by an inscription in the corresponding element of the allocation status memory.

Le ramassage peut alors consister simplement en une exploration complète de cette mémoire de statuts d'allocation, tout en faisant passer ces éléments non marqués à l'état libre.The pickup may then simply consist of a complete exploration of this allocation status memory, while passing these unmarked elements to the free state.

Dans la réalisation préférée où l'on opère par fournées, le processeur de gestion de mémoire effectue alternativement la récupération de mémoire sur les cellules de la première et de la seconde fournée. Le marquage consiste à inverser l'affectation de fournées des cellules, en inversant l'état non libre de l'élément associé dans la mémoire de statut d'allocation. Et le ramassage consiste alors à faire passer à l'état libre les éléments de la mémoire de statut d'allocation qui ont conservé la marque qu'elles avaient au début de cette fournée.In the preferred embodiment where one operates in batches, the memory management processor alternately performs memory recovery on the cells of the first and second batch. The marking consists in inverting the allocation of batches of the cells, by inverting the non-free state of the associated element in the allocation status memory. And the pickup then consists in passing to the free state the elements of the allocation status memory which have retained the mark they had at the beginning of this batch.

D'autres caractéristiques et avantages de l'invention apparaitront à l'examen de la description détaillée ci-après, faite en référence aux dessins annexés, ainsi qu'à quatre annexes.Other characteristics and advantages of the invention will appear on examining the detailed description below, made with reference to the accompanying drawings, as well as four appendices.

Sur les dessins. annexés - la figure 1 est un schéma illustrant l'organisation générale de la machine; et - les figures 2 à 5 sont les organigrammes de mécanismes incorporés au processeur de gestion de mémoire.On the drawings. appended - Figure 1 is a diagram illustrating the general organization of the machine; and FIGS. 2 to 5 are the organigrams of mechanisms incorporated in the memory management processor.

Sur les annexes de la description - l'annexe 1 constitue une spécification générale de la machine, comportant un certain nombre de définitions de base, la définition de l'état courant de la machine, ainsi que de son jeu de commandes de base, dans un exemple particulier - l'annexe 2 définit de manière détaillee le contenu de la mémoire des cellules, dans l'exemple où les mêmes cellules sont utilisées pour la mémoire de désignation et pour la mémoire formant pile de géniteurs, avec les conséquences qui en découlent pour la représentation de l'état de la machine; - l'annexe 3 illustre le fonctionnement du processeur d'exe- cution, et du jeu de commandes de base incorporé à celui-ci, à l'aide d'exemples ; et - l'annexe 4 illustre les synchronisations entre les deux processeurs, ainsI que le fonctionnement du processeur de gestion de mémoire, à l'aide d'exemples et de diagrammesO
Les figures relevant des annexes sont asoucees comme figures 6 à 27, aux figures 1 à 5 associées à la présente description
Le contenu de l'ensemble des documents annexes, y compris les dessins, est constitué pour l'essentiel d'informations dé caractère certain. A ce titre, il est incorporé à la présente description, pour contribuer avec cellesci à la définition de l'invention.
Annexes to the description - Annex 1 is a general specification of the machine, including a number of basic definitions, the definition of the current state of the machine, as well as its basic set of commands, in a particular example - Appendix 2 defines in detail the contents of the memory of the cells, in the example where the same cells are used for the designation memory and for the memory forming a stack of brooders, with the resulting consequences for the representation of the state of the machine; - Appendix 3 illustrates the operation of the execution processor, and the basic set of commands incorporated therein, by way of examples; and - Appendix 4 illustrates the synchronizations between the two processors, as well as the operation of the memory management processor, using examples and O diagrams.
The figures relating to the appendices are given as figures 6 to 27, in FIGS. 1 to 5 associated with the present description.
The content of all ancillary documents, including drawings, is essentially information of a certain nature. As such, it is incorporated in the present description, to contribute with these to the definition of the invention.

Par ailleurs, il a été nécessaire d'utiliser, en particulier dans les annexes, des graphismes particuliers destinés à préserver la cohérence et la clarté des explications données, compte tenu de l'intervention d'un nombre important de"mots réservés" (ce qui s'entend également de groupes verbaux).In addition, it was necessary to use, particularly in the annexes, special graphics intended to preserve the coherence and clarity of the explanations given, given the intervention of a large number of "reserved words" (this which also includes verbal groups).

Lorsque cela est nécessaire pour une bonne compréhension, les mots réservés sont écrits entre apostrophes ('), dans le reste de la description et dans les revendications.When necessary for a good understanding, the reserved words are written in single quotes ('), in the remainder of the description and in the claims.

Il est maintenant fait référence à la figure 1. Celle-ci montre que la machine selon l'invention possède les dispositifs suivants -une mémoire des cellules 14, utilisée essentiellement pour la représentation des termes. Cette mémoire, de grande capacité, peut être construite à l'aide de circuits 4164 de la Société Intel Corp. Ce sont des mémoires à temps d'accès moyennement rapide, typiquement 150 nanosecondes.Reference is now made to FIG. 1. This shows that the machine according to the invention has the following devices: a memory of cells 14, used essentially for the representation of terms. This high-capacity memory can be built using Intel Corp. 4164 chipsets. These are memories with access time moderately fast, typically 150 nanoseconds.

- un processeur d'exécution 10, qui réalise les instructions de base de la machine, à savoir la construction et l'accès aux termes conservés dans la mémoire des cellules. Il comporte un organe programmable, ou plus précisément microprogrammable, 16, qui permet de définir diverses utilisations de la machine, comme un interpréteur du langage PROLOG. Ce processeur peut être construit à l'aide des circuits de la famille 2900 de la société Advanced Micro Devices. Cette famille de circuits permet de constuire par tranches" des processeursmicroprogrammables dont la fréquence de l'horloge de base est motennement rapide, typiquement 150 nanosecondes.an execution processor 10, which carries out the basic instructions of the machine, namely the construction and access to terms stored in the memory of the cells. It comprises a programmable, or more specifically microprogrammable, element 16, which makes it possible to define various uses of the machine, such as an interpreter of the PROLOG language. This processor can be built using the 2900 family of Advanced Micro Devices. This family of circuits makes it possible to build up "microprogrammable processors whose frequency of the basic clock is motennement fast, typically 150 nanoseconds.

- un processeur de gestion de mémoire 12, qui réalise essentiellement le mécanisme de récupération de mémoire, et aussi l'allocation de cellules de mémoire libre sur requête du processeur d'exécution. Le processeur de gestion de mémoire fonctionne en parallèle avec le processeur d'exécution. Il peut également être construit à l'aide des circuits de la famille 2900 de Advanced Micro Ceïirns. - A memory management processor 12, which essentially performs the memory recovery mechanism, and also the allocation of free memory cells on request of the execution processor. The memory management processor operates in parallel with the execution processor. It can also be built using the 2900 family of Advanced Micro Ceirns.

- une mémoire des statuts d'allocation 15,- qui conserve l'information nécessaire au processeur de gestion de mémoire.an allocation status memory 15, which stores the information necessary for the memory management processor.

Dans l'exemple détaillé décrit, cette mémoire comporte autant d'éléments que la mémoire de cellules. Mais les éléments de la mémoire des statuts d'allocation ont une largeur limitée à deux bits. Cette mémoire est construite en technologie rapide, par exemple à l'aide de boîtiers Am 9128-10 de la
Société AMD (temps d'accès de l'ordre de 100 ns), - un bus mémoire 13 qui réalise et arbitre les accès concurrentiels à la mémoire des cellules de la part du processeur d'exécution et du processeur de gestion de mémoire e Le mécanisme d'arbitrage peut être classique, et réalisé à partir de circuits existant sur le marché, comme les circuits produits par la Société INTEL Corps pour la gestion de 1'arbi- trage de son bus MULTIBUS.
In the detailed example described, this memory comprises as many elements as the memory of cells. But the elements of the allocation status memory have a width limited to two bits. This memory is built in fast technology, for example using the Am 9128-10 boxes of the
AMD company (access time of the order of 100 ns), - a memory bus 13 which realizes and arbitrates the competitive access to the memory of cells from the execution processor and the memory management processor e Le The arbitration mechanism may be conventional, and made from circuits existing on the market, such as the circuits produced by the INTEL Corps Company for the management of the arbitration of its MULTIBUS bus.

Ur 3organe de communication et de synchronisation ou bus de rr-quetes lle qui assure entre les aeuat processeurs l'échange d'informations et la synchronisation macroscopique ayant trait à la gestion de mémoire. Cela se produit essentielle- ment par requête et acquittement de requête, ou mise en attend te de celle-ci. Le bus de requêtes ll peut consister en des liaisons entre les processeurs mentionnés plus haut, qui possèdent des moyens d'intercommunication entre processeurs. It is the communication and synchronization unit or bus that provides the information exchange and macroscopic synchronization relating to memory management between the other processors. This is essentially done by request and acknowledgment of the request, or the expectation of it. The request bus 11 may consist of links between the processors mentioned above, which have intercommunication means between processors.

La mémoire des cellules 14 constitue les moyens de mémoire vive précitée. Elle pourrait être réalisée en deux parties physiquement séparées, éventuellement de structure différente, correspondant respectivement à la mémoire de désignation et à la mémoire formant pile de géniteurs, telles que définies plus haut. Il est préféré que cette mémoire de cellules comporte une structure unique, à partir de cellules élémentaires de taille identique, permettant aussi bien la réalisation de la mémoire de désignation que celle de la mémoire formant pile de géniteurs. Il sera indiqué plus loin comment ceci est réalisé. Dans ce cas, la mémoire des statuts d'allocation comporte des éléments qui correspondent non seulement à la mémoire de désignation, mais aussi à la mémoire formant pile de géniteurs.Une variante de l'invention consisterait à ne prévoir, dans cette mémoire des statuts d'allocation, que des éléments en nombre limité à celui des cellules de la mémoire de désignation.The memory of the cells 14 constitutes the above-mentioned random access memory means. It could be made in two physically separated parts, possibly of different structure, respectively corresponding to the designation memory and the memory forming a stack of parents, as defined above. It is preferred that this cell memory comprises a single structure, from elementary cells of identical size, allowing the realization of the designation memory as well as that of the memory forming the parent stack. It will be indicated later how this is achieved. In this case, the allocation status memory includes elements that correspond not only to the designation memory, but also to the memory forming the parent battery.A variant of the invention would consist in not providing, in this memory of the statutes of allocation, that elements limited in number to that of the cells of the designation memory.

Il sera utile de se référer maintenant à l'Annexe 1, afin d'acquérir les notions de base et définitions utiles à la compréhension de l'invention. L'Annexe 1 précise aussi l'état de la machine, et les caractéristiques abstraites du jeu de commandes de base de son processeur d'exécution, avec là encore les définitions nécessaires.It will be useful to refer now to Annex 1, in order to acquire the basic notions and definitions useful for understanding the invention. Annex 1 also specifies the state of the machine, and the abstract characteristics of the basic command set of its execution processor, with again the necessary definitions.

L'annexe 2 définit plus en détail la structure de la mémoire des cellules, d'abord pour la mémoire de désignation, puis pour la mémoire formant pile de géniteurs. S'y trouve également définie la notion de confJguration cohérente dans la mémoire de représentation. Cette notion de cohérence est ensuite étendue après intervention de la mémoire formant pile de géniteurs. Enfin est défini l'état de la machine, avec le registre d'affectation permanente que comporte le processeur d'exécution, la représentation de l'état de la machine par le contenu de ce registre, et par le contenu de la mémoire des cellules. Est alors brièvement notée la concordance entre la réalisation ainsi définie de la machine proposée et la spécification qui en est faite dans l'Annexe 1.Appendix 2 defines in more detail the structure of the memory of the cells, first for the designation memory, then for the memory forming the parent stack. It also defines the notion of coherent configuration in the representation memory. This notion of coherence is then extended after intervention of the memory forming the parent stack. Finally, the state of the machine is defined, with the permanent assignment register included in the execution processor, the representation of the state of the machine by the contents of this register, and the contents of the memory of the cells. . It is then briefly noted the concordance between the realization thus defined of the proposed machine and the specification which is made in Annex 1.

L'agencement de la mémoire de cellules selon ce qui est proposé en Annexe 2 est considéré comme accessible à l'homme de l'art, sur la base des enseignements donnés. Il en est de meme pour le registre incorporé au processeur d'exécution. The arrangement of the cell memory according to what is proposed in Appendix 2 is considered accessible to those skilled in the art, on the basis of the teachings given. It is the same for the register incorporated in the execution processor.

Le processeur d'exécution possède tout d'abord un mécanisme dé "traversée des liaisons". La réalisation de ce mécanisme est là encore considérée comme accessible à l'homme de l'art, sans qu'il soit nécessaire d'en donner une représentation algorithmique figurative. On note d'ailleurs qu'un tel mécanisme est réalisé sous forme logicielle dans les expérimen- tations d'interpréteùrs PROLOG qui ont été mentionnés plus haut. Le processeur d'exécution le réalise sous forme maté- rielle.The execution processor first has a "traversing links" mechanism. The realization of this mechanism is again considered accessible to those skilled in the art, without it being necessary to give a figurative algorithmic representation. It should be noted that such a mechanism is implemented in software form in the PROLOG interpreter experiments mentioned above. The execution processor realizes it in hardware form.

Suivent alors les commandes également implantées sous forme matérielle, c'est-à-dire microprogrammées, dans le processeur d'exdeution. Le mécanisme de chacune de ces commandes est exposé dans l'Annexe 3 Il est, dans la plupart des cas, accompagné d'un exemple associé. Sur la base des enseignements donnés a propos de ces mécanismes dans l'Annexe 3,il est considéré comme accessible à l'homme de l'art de construire le processeur d'exécoution équipé d'un tel jeu de commandes de base, à partir des circuits inté- grés cités plus haut.Then follow orders also implanted in hardware form, that is to say, microprogrammed, in the processor of exdeution. The mechanism of each of these commands is set out in Annex 3. It is, in most cases, accompanied by an associated example. On the basis of the teachings given about these mechanisms in Annex 3, it is considered as accessible to those skilled in the art to construct the execution processor equipped with such a basic set of commands, from integrated circuits mentioned above.

Il est à noter que certaines de ces commandes sont appa- rentées à des instructions connues du langage LISP. Ainsi -'Construire'existe telle quelle dans LISP (CONS), -'accéder gauche' correspond à'CAR'de LISP, -'accéder droite'correspond à'CDR'de LISP, - les trois commandes de tests ont également leurs éoui- valents dans LISP, - il en est encore de meme pour l'instruction de 'comparaison'.It should be noted that some of these commands are related to instructions known from the LISP language. Thus -'Building 'exists as it is in LISP (CONS), -' access left 'corresponds to' CAR 'of LISP, -' access right 'corresponds to' CDR 'of LISP, - the three test commands also have their qua - valents in LISP, - it is still the same for the instruction of 'comparison'.

Les autres commandes proposées n'ont pas leur équivalent dans
LISP, elles sont particulièrement adaptées à l'interprétation des langages relationnels et sont un des traits originaux de la machine.
The other proposed commands do not have their equivalent in
LISP, they are particularly adapted to the interpretation of relational languages and are one of the original features of the machine.

Le fait que certaines commandes ici proposées aient pu être réalisées sous forme matérielle dans certaines machines, -"LISP Machine Progress Report", R. Greenblatt. memo 444AI, lab MIT Cambridge Mass, Aug. 1977 est à souligner. La réalisation des autres commandes, de type original, dont le mécanisme est exposé dans l'annexe 3, est microprogrammable de manière analogue.The fact that some commands proposed here could be realized in material form in some machines, - "LISP Machine Progress Report", R. Greenblatt. memo 444AI, lab MIT Cambridge Mass, Aug. 1977 is to be highlighted. The realization of the other commands, of original type, the mechanism of which is explained in Appendix 3, is similarly microprogrammable.

Ont été décrits pour le moment la structure de la mémoire des cellules 14 et celle du processeur d'exécution 10, leur interconnexion étant réalisée à travers le bus 13. Muni du jeu d'instructions de base qui vient d'être défini, le processeur d'exécution 10 est apte à permettre l'interprétation directe de la plupart des langages de programmation logique, sinon tous, et en particulier de celui connu sous le nom de PROLOG. Ceci constitue un premier avantage important desla présente invention.For the moment, the structure of the memory of the cells 14 and that of the execution processor 10 has been described, their interconnection being carried out through the bus 13. Equipped with the basic set of instructions that has just been defined, the processor Execution 10 is able to allow the direct interpretation of most, if not all, logical programming languages, and in particular the one known as PROLOG. This constitutes a first important advantage of the present invention.

Il convient d'observer que la représentation concrète, dans la machine, du travail effectué par le processeur d'exécution comporte trois niveaux - un niveau d- qui s'intéresse uniquement au contenu de la mémoire de désignation. Voir à cet égard les définitions de 'd-terminal' ,- 'd-ultime' et 'd-représentation' dans l'annexe xe 2.It should be noted that the actual representation in the machine of the work performed by the execution processor has three levels - a level d - which is concerned only with the contents of the designation memory. See in this respect the definitions of 'd-terminal', - 'd-ultimate' and 'd-representation' in Annex xe 2.

- un second niveau noté t-. Ce niveau concerne les rapports entre les désignations contenues dans la mémoire de désigna tion et les rangs dans la pile (on se rappellera que toute variable liée contenue dans. la mémoire de désignation fait référence à un géniteur rangé dans la pile). A cela correspondent les définitions 't-terminal', 't-ultime' et 't-représentation' de l'Annexe 2.- a second level noted t-. This level relates to the relationships between the designations contained in the design memory and the ranks in the stack (it will be recalled that any linked variable contained in the designation memory refers to a parent stored in the stack). To this correspond the definitions 't-terminal', 't-ultimate' and 't-representation' of Annex 2.

- Le troisième niveau, noté S-, intéresse le contenu de la mémoire-pile elle-meme. Il est explicité par les définitions 'S-ultime', 'S-correspondance' et'S-représentation' dans l'Annexe 2.- The third level, noted S-, concerns the contents of the memory-pile itself. It is explained by the definitions 'S-ultimate', 'S-correspondence' and 'S-representation' in Annex 2.

Ceci permettra de mieux comprendre les enseignements donnés sur l'état courant de la machine, à la fin de l'Annexe 2.This will help to better understand the lessons given on the current state of the machine at the end of Appendix 2.

On s'attachera maintenant à une caractéristique essentielle de la présente invention, qui concerne la mise en oeuvre (o implementation) d'une récupération automatique, et opti - maie, des' éléments de mémoire qui contiennent des informations devenues inutiles au processeur d'exécution
Le point de départ du mécanisme de récupération est l'instruction "réduire" déjà mentionnée.
An essential feature of the present invention will now be directed to the implementation (o implementation) of an automatic, and optimal, recovery of memory elements which contain information that has become useless to the processor of the present invention. execution
The starting point of the recovery mechanism is the "reduce" instruction already mentioned.

La plupart des concepteurs de langages de traitement formel ont prévu, généralement sous forme logicielle implémentée par le processeur d'exécution, une gestion de mémoire tendant à récupérer les parties de mémoire devenues inutiles. Ainsi, le langage LISP connait List processing in réal time on serial computer", H. Baker, communication of the ACM, April 1978, Vol. 21 Num 4
Pour ce qui est du langage PROLOG, différentes propositions ont été faites pour récupérer de la mémoire notamment "A note on garbage collection in PROLOG interpreters"
Mr. Bruynoeghe, Proceedings of the first International logic programming conference, Sept. 14-t7th 1982, Marseille,
France".Aucune de ces propositions n'a donné entière satisfaction, notamment aucune proposition de récupération,en parallèle de l'interprétation,n'a été faite.
Most designers of formal processing languages have provided, generally in software form implemented by the execution processor, a memory management tending to recover the memory parts that have become useless. Thus, the language LISP knows List processing in real time on serial computer ", H. Baker, communication of the ACM, April 1978, Vol.21 Num 4
As far as the PROLOG language is concerned, various proposals have been made to recover memory, notably "A note on garbage collection in PROLOG interpreters"
Mr. Bruynoeghe, Proceedings of the first International Logic Programming Conference, Sept. 14 -T7th 1982, Marseille,
France ". None of these proposals has been entirely satisfactory, in particular no proposal for recovery, in parallel with the interpretation, has been made.

Le premier pas vers la solution selon l'invention consiste à prévoir un processeur séparé de gestion-de mémoire 12, qui dialogue par requêtes avec le processeur d'exécution, à travers l'organe de communication et de synchronisation schématisé en -il. The first step towards the solution according to the invention consists in providing a separate memory-management processor 12, which dialogues by requests with the execution processor, through the communication and synchronization element schematized in -il.

Sauf en cas d:invalidation des requêtes, comme on le verra
plus loin, le processeur de gestion de mémoire 12 répond à
une requête d'allocation de cellule de mémoire formulée
par le processeur d'exécufion en allouant chaque fois à ce
dernier une cellule de mémoire déterminée. Le processeur
d'exécution 10 va donc ainsi disposer, de façon pratiquement
permanente, des cellules de mémoire dont il a besoin pour
ses opérations.
Except in case of: invalidation of requests, as will be seen
further, the memory management processor 12 responds to
a memory cell allocation request formulated
by the execufion processor by allocating each time to this
last a given memory cell. The processor
Execution 10 will therefore dispose, practically
permanent, the memory cells it needs for
its operations.

Pendant l'intervalle de temps qui-va s'écouler entre une
opération "invalidation des requêtes" et l'opération ulté
rieure "validation des requêtes", le processeur de gestion"
de mémoire 12 va se trouver alors dans le "niveau requête"
décrit aussitôt après le niveau de fond. Une requête émanant
du processeur d'exécution 10 est alors différée, c'est-à
dire qu'elle est mémorisée et qu'elle ne sera prise en compte
que lorsque le processeur de gestion de mémoire repassera
au niveau de fond.
During the time interval that will elapse between a
"invalidate requests" operation and the subsequent operation
"Query validation", the management processor "
of memory 12 will then be in the "query level"
described immediately after the background level. A request from
of the execution processor 10 is then deferred, that is to say
say that it is memorized and will not be taken into account
that when the memory management processor will replay
at the bottom level.

En bref, le niveau de fond consiste donc en l'exécution par
le processeur de gestion de mémoire des opérations qui lui
sont propres, et que l'on examinera plus loin. En présence
d'une'requête',ou bien d'une'invalidation des requêtes pour
une autre raison, le processeur de qestion de mémoire
atinterrompt pour passer au niveau requête". En cette
situation, toute nouvelle requête émanant du processeur d'exécution est différée. Pendant le traitement d'une requête, la fin de requête" ramène le processeur de gestion.
In short, the background level is therefore the execution by
the memory management processor of the operations that him
are clean, and will be discussed later. In the presence
of an 'inquiry', or of an invalidation of requests for
another reason, the memory qestion processor
atinterrupts to move to the query level. "
situation, any new requests from the execution processor are delayed. During the processing of a request, the end of the request "returns the management processor.

de mémoire à son niveau de fond, où il continue les activités interrompues par la requête. Au contraire, l'opération de "forçage" fait repasser le processeur de gestion de mémoire à son niveau de fond, en abandonnant l'activité interrompue par la requete, au profit d'une activité indiquée par l'opération de forçage (voir Annexe 4, page 13).from memory to its background level, where it continues the activities interrupted by the query. On the contrary, the "forcing" operation causes the memory management processor to go back to its background level, abandoning the activity interrupted by the request, in favor of an activity indicated by the forcing operation (see Annex 4, page 13).

Il convient maintenant de retourner brièvement à la définie tion des instructions 'réduire' et ereprendret dans l'Annexe 3. Ces instructions provoquent une requête de "démarrer une fournée", adressée par le processeur d'exécution au processeur de gestion de mémoire, avec pour paramètre le contenudu registre géniteur courant, et trois noms zlR n2 n3, déterminés par le processeur d'exécution comme étant respectivement "ultime valeur11 des noms nn1' nn2' 3 initialement associés à l'instruction'réduire'. ou bien définir au cours de 1 t instruction 'reprendre', suivant le cas.It is now necessary to go back briefly to the definition of the 'reduce' and read instructions in Annex 3. These instructions cause a request to 'start a batch', addressed by the execution processor to the memory management processor, with for parameter the contents of the current parent register, and three names zlR n2 n3, determined by the execution processor as being respectively "ultimate value11 of the names nn1 'nn2' 3 initially associated with the instruction'reduce '. 1 t instruction 'resume', as appropriate.

C'est donc dans le mode de réalisation décrit l'une des instructions 'réduire' et 'reprendre' qui va provoquer les opérations de récupération automatiques de cellules par le processeur de gestion de mémoire 12.It is therefore in the embodiment described one of the instructions 'reduce' and 'resume' which will cause automatic cell recovery operations by the memory management processor 12.

A cet effet, le processeur de gestion de mémoire 12 est associé à la mémoire des statuts d'allocations 15, dont la nature a déjà été exposée et se prouve précisée dans l X annexe 4. Le processeur de gestion de mémoire 12 contient en outre une série de registres également exposés dans la meme annexe
Le processeur de gestion de mémoire 12 est microprogrammé selon deux mécanismes très simples, également explicités dans l'annexe 4 - décider si une cellule est marquée, - marquer une cellule.
For this purpose, the memory management processor 12 is associated with the memory of the allocation statuses 15, the nature of which has already been explained and proves to be specified in Annex X 4. The memory management processor 12 also contains a series of records also set out in the same appendix
The memory management processor 12 is microprogrammed according to two very simple mechanisms, also explained in appendix 4 - deciding whether a cell is marked, - marking a cell.

Schématiquement, la récupération automatique se déroule alors de la manière suivante - le processeur de gestion de mémoire 12 explore une partie au moins des treillis de termes définis par le contenu des moyens de mémoire vive, c'est-à-dire de la mémoire de cellules qui réunit ici la mémoire de désignation et la mémoirepile de géniteurs. Dans le cas présent, la partie concernée est définie par l'identification de la fournée en cours" et par les indications accompagnant la requete démarrer une fournée" telle que fournie par le processeur d'exécution. Comme on le verra plus loin, cette requête est accompagnée de quatre paramètres, consistant en la référence d'un géniteur et en trois noms.Schematically, the automatic recovery then proceeds in the following manner - the memory management processor 12 explores at least part of the lattices of terms defined by the content of the RAM means, that is to say the memory of cells that brings together here the designation memory and the memory of spawners. In this case, the relevant part is defined by the identification of the current batch "and by the indications accompanying the request to start a batch" as provided by the execution processor. As will be seen below, this query is accompanied by four parameters, consisting of the reference of a parent and in three names.

Lors de cette exploration, les cellules sont marquées en fonction de conditions prédéterminées que l'on explicitera en détail ci-après. Dans le mode de réalisation préféré, ce marquage consiste en une inversion de l'indication de fournée dans l'emplacement de la mémoire 15 des statuts d'allocations qui correspond à la cellule à marquer.During this exploration, the cells are labeled according to predetermined conditions which will be explained in detail below. In the preferred embodiment, this marking consists of an inversion of the batch indication in the location of the allocation status memory 15 which corresponds to the cell to be marked.

Enfin est effectué un ramassage des cellules non marquées, qui vont donc maintenant etre considérées comme libres. Ce ramassage consiste ici à faire passer à l'état libre les éléments de la mémoire de statut d'allocation qui ont conservé la marque qu'elles avaient au début de cette fournée.Finally, a collection of unlabeled cells is carried out, which will now be considered as free. This collection consists here in passing to the free state the elements of the allocation status memory which have retained the mark they had at the beginning of this batch.

Il est rappelé que, dans l'exemple préféré décrit, la mémoire de statuts d'allocations comporte, en correspondance bi-univoque, autant d'éléments qu'il y a de cellules dans les moyens de mémoire vive. En d'autres termes, pourront etre marquées non seulement les cellules de la mémoire de désignation, mais aussi celles de la pile de géniteurs.It is recalled that, in the preferred example described, the allocation status memory comprises, in one-to-one correspondence, as many elements as there are cells in the RAM means. In other words, can be marked not only the cells of the designation memory, but also those of the parent stack.

On va maintenant décrire en référence à l'Annexe 4, ainsi qu'aux figures 2 à 5, l'ensemble des conditions prédéterminées qui permettent une récupération très efficace des cellules de mémoire. Reference will now be made with reference to Annex 4, as well as to FIGS. 2 to 5, of all the predetermined conditions which allow a very efficient recovery of the memory cells.

Ces mécanismes sont décrits de manière formelle dans i'Annexe 4.These mechanisms are formally described in Annex 4.

Les figures 2 à 5 en donnent une représentation algorithmique correspondante. La description qui va être donnée maintenant se fonde en même temps sur les annexes et sur les figures 2 à 5, en cherchant à refléter les cheminements du pro cesseur de gestion de mémoire 12.Figures 2 to 5 give a corresponding algorithmic representation. The description that is going to be given now is based at the same time on the appendices and on Figures 2 to 5, seeking to reflect the memory management processor's pathways.

Un autre aspect est à souligner. Jusqu'd présent, les mécanismes de récupération de mémoire connus se sont intéressés essentiellement aux cellules de type constructeurs, sans pouvoir résoudre correctement le cas des cellules variables, et encore moins celui de la pile de géniteurs.La présente invention offre l'avantage de poudre, d'une manière complète, le problème de la récupération destcellules de variables, lorsqu'elle est possible En plus, elle permet également d'effectuer des opérations de récupération dans la pile de géniteurs.Another aspect is to emphasize. Until now, the known memory recovery mechanisms have been mainly interested in the type of constructor cells, without being able to solve the case of the variable cells correctly, let alone that of the parent stack. The present invention offers the advantage of powder, in a complete way, the problem of the recovery destcellules of variables, when it is possible In addition, it also makes it possible to carry out operations of recovery in the stack of parents.

La liste de registres du processeur de gestion de mémoire 12;
telle que donnée dans l'annexe 46 tient compte de cette situation.
The list of registers of the memory management processor 12;
as given in Annex 46 takes account of this situation.

En présence d'une requête 'démarrage-fournée2, le processeur d'exécution va (annexe 4, page 10) ç - inverser la marque, c'est-d-dire l'indication de fournée, contenue dans le registre "fournée courante", - ranger la référence du géniteur accompagnant la requête comme paramètre dans le registre géniteur sommet", - ranger le ou les "noms" (ici trois nomsr accompagnant la requête comme paramètre, dans le registre "nom:sous marquage", - ranger le niveau du nouveau géniteur sommet dans le registre "niveau sous marquage".In the presence of a start-batch2 request, the execution processor goes (appendix 4, page 10) - inverting the mark, ie the batch indication, contained in the "current batch" register ", - arrange the reference of the sender accompanying the request as a parameter in the parent register vertex", - arrange the "name" (here three namesr accompanying the request as a parameter, in the register "name: under marking", - put away the level of the new parent vertex in the register "level under marking".

Il est avantageux d'effectuer aussi la recherche immédiate du géniteur qui représente ce géniteur sommet, le mécanisme impliqué étant décrit plus loin. It is also advantageous to carry out the immediate search for the parent who represents this vertex parent, the mechanism involved being described below.

La suite est alors le mécanisme dit récupération (annexe 4, page 1), qui se décompose en trois phases successives, à savoir: marquage; ramassage; attente-fournée.The rest is then the so-called recovery mechanism (Annex 4, page 1), which breaks down into three successive phases, namely: marking; collection; waiting-batch.

La structure générale du mécanisme de marquage (annexe 4, page 2) est illustrée sur la figure 2. Elle fait appel à différents mécanismes auxiliaires, illustrés sur les figures 3, 3A, 3B, 3C et 4.The general structure of the marking mechanism (Annex 4, page 2) is illustrated in Figure 2. It uses various auxiliary mechanisms, illustrated in Figures 3, 3A, 3B, 3C and 4.

Sur la figure 2, le mécanisme général de marquage commence à l'étape 200. La première étape active est un test 201 qui détermine si le niveau de marquage est supérieur ou égal à zéro. (Il est rappelé qu'en informatique, le niveau zéro a un sens actif.}
Tant que le niveau de marquage n'est pas devenu négatif, ce qui indique que le marquage est terminé, l'étape 202 appelle le mécanisme de "marquage terme", que l'on décrira à propos de la figure 3. Ce marquage de terme est effectué avec le ou les noms, ici nom 1, nom 2, nom 3,que contient le registre de noms.
In Fig. 2, the general marking mechanism starts at step 200. The first active step is a test 201 which determines whether the marking level is greater than or equal to zero. (It is recalled that in computing, the level zero has an active meaning.}
As long as the level of marking has not become negative, which indicates that the marking is finished, step 202 calls the "term marking" mechanism, which will be described with reference to FIG. term is performed with the name or names, here name 1, name 2, name 3, that contains the name register.

Ensuite, l'étape 203 invalide les requêtes. L'étape 205 appelle le mécanisme de décrémentation du niveau de marquage qui sera décrit à propos de la figure 4.Then, step 203 invalidates the requests. Step 205 calls the decrementing mechanism of the level of marking which will be described with reference to FIG. 4.

Après cela, l'étape 207 consiste à mettre "disjoint" dans le registre "situation exécution". Enfin, l'étape 209 produit une revalidation des requêtes, et l'on retourne immédiatement en amont du test 201.After that, step 207 consists in putting "disjoint" in the "execution situation" register. Finally, the step 209 produces a revalidation of the requests, and one returns immediately upstream of the test 201.

Ces opérations seront répétées jusqu'à ce qu'on arrive à un niveau négatif, indiquant la fin d'une phase complète de marquage. Lorsque cette condition est vérifiée,la sortie non du test 201 passe au mécanisme de ramassage 500, qui sera décrit à propos de la figure 5.These operations will be repeated until a negative level is reached, indicating the end of a complete marking phase. When this condition is verified, the non-output of the test 201 proceeds to the pickup mechanism 500, which will be described with reference to FIG.

Il est maintenant fait référence à la figure 3, pour la description du mécanisme 'marquage terme', qui possède pour paramètre un champ noté maintenant f, champ qui contient le nom n faisant l'objet du marquage de terme
Un test 310 détermine tout d'abord de quel type est llinclica- teur du nom n. S'il s'agit d'un atome, on passe immédiatement à l'étape de fin 326.
Reference is now made to FIG. 3 for the description of the term marking mechanism, which has as parameter a field now denoted f, which field contains the name n being the subject of the term marking.
A test 310 firstly determines which type is the name nlclicator. If it is an atom, we immediately go to the end step 326.

S'il s'agit d'un géniteur, on passe à une étape 370. Cette étape consiste en un mélanisme de normalisation de niveau sur le champ f, et sera décrite à propos de la figure 3C Après cette étape 370, on obtient à nouveau la fin à 12 étape 328. If it is a parent, we go to a step 370. This step consists of a level normalization melanism on the field f, and will be described with reference to FIG. 3C. After this step 370, we obtain at again the end at 12 step 328.

Enfin, si le test effectué en 310 indique que le nom n est une variable ou un constructeu un nouveau test 312 intervient. Ce test examine si la marque d'allocation de la cellule référencée par le champ information du nom n est marquée ou non marquée. Si elle est déjà marquée, on passe à la fin 326.Finally, if the test performed at 310 indicates that the name is a variable or a construct, a new test 312 occurs. This test examines whether the allocation mark of the cell referenced by the information field of the name n is marked or unmarked. If it is already marked, we go to the end 326.

Si elle n'est pas marquée, un troisième test 314 détermine maintenant quel est le type d1indicateur de n, entre les deux cas restant possibles, à savoir celui d'un constructeur c ou d'une variable v.If it is not marked, a third test 314 now determines what is the type of indicator of n, between the two remaining possible cases, namely that of a constructor c or a variable v.

S'il s'agit d'un constructeur c, l'étape 301 refait un marquage de terme avec les deux parties de ce constructeur notées 'gauche de c' et 'droite de c'. Après exécution complète de tous ces marquages, étape 322 consistera à marquer la cellule, ici un constructeur c, initialement examinée après quoi on passe à la fin 324.If it is a constructor c, the step 301 remakes a term marking with the two parts of this manufacturer noted 'left of c' and 'right of c'. After complete execution of all these markings, step 322 will consist in marking the cell, here a constructor c, initially examined after which one passes at the end 324.

Si le test 314 a déterminé que l'on était en présence dU une variable v, l'étape 330 appelle le mécanisme de normalisation de liaison avec cette variable. Ce mécanisme est illustré à la figure 3A.If the test 314 determined that there was a variable v, step 330 calls the link normalization mechanism with this variable. This mechanism is illustrated in Figure 3A.

Après cela, un test 318 détermine si, le -résultat de la normalisation qui aura été faite entre temps, sur la va:riable est ou non libre. Si oui, on retrouve étape 322.After that, a test 318 determines whether, the result of the normalization that has been made in the meantime, on the variable is or is not free. If so, we find step 322.

Sinon, on refait le marquage de terme avec la liaison de v, à l'étape 303, après quoi on retourne encore une fois pour terminer à l'étape 322.If not, the term marking is repeated with the link of v, in step 303, after which one returns again to finish at step 322.

Le mécanisme marquage de terme 300 de la figure 3 comporte des bouclages sur lui-même. L'homme de l'art comprendra qu'une mémorisation estllnécessaire pour la bonne exécution de ce mécanisme La page 3 de l'annexe 4 décrit comment réaliser une telle mémorisation à l'aide d'une mémoire auxiliaire en pile.The term marking mechanism 300 of FIG. 3 has loopbacks on itself. Those skilled in the art will understand that memorization is necessary for the proper execution of this mechanism. Page 3 of Annex 4 describes how to perform such storage using an auxiliary memory in a stack.

Par ailleurs, la rubrique 11 de la page 4 de l'annexe 4, en référence à la figure 21, explique comment, lorsque l'on rencontre une cellule déjà marquée, il n'est pas nécessaire de parcourir les cellules auxquelles elle donne accès dans le cadre du niveau sous marquage, car elles sont certainement déjà marquées. Il s'agit là d'un avantage important des mécanismes selon l'invention.In addition, item 11 on page 4 of Appendix 4, with reference to Figure 21, explains how, when you encounter an already marked cell, it is not necessary to browse the cells to which it gives access. under the level under marking, because they are certainly already marked. This is an important advantage of the mechanisms according to the invention.

Il est maintenant fait référence à la figure 3B, qui décrit un mécanisme de recherche du 'représentant' d'un géniteur g.Reference is now made to Figure 3B, which describes a search mechanism of the 'representative' of a parent g.

Ce mécanisme est désigné dans son ensemble par 350.This mechanism is designated as a whole by 350.

Il commence par une étape 351 consistant à prendre pour géniteur courant le géniteur g défini au départ.It begins with a step 351 of taking as parent current parent g defined initially.

Ensuite, un test 353 détermine si la nature du géniteur courant est celle d'un géniteur coupé.Next, a test 353 determines whether the nature of the current parent is that of a cut parent.

S'il s'agit bien d'un géniteur coupé, l'étape 355 remplace le géniteur courant par celui désigné dans le champ 'précédent' du géniteur courant en vigueur jusqu'à présent, et on recommence le test 353.If it is indeed a cut off parent, step 355 replaces the current parent by the one designated in the 'previous' field of the current parent that has been in effect until now, and the test 353 is repeated.

Lorsque la sortie du test 353 est non, c'est qu'il s'agit d'un géniteur actif. C'est alors la fin en L'étape 357, et le géniteur 'représentant' est le géniteur courant qui vient d'etre détermine.When the output of the test 353 is no, it is that it is an active parent. It is then the end in step 357, and the parent 'representative' is the current parent who has just been determined.

Ce mécanisme est décrit plus formellement à la page 6 de l'annexe 4. On pourra se référer à la figure 25.This mechanism is described more formally on page 6 of Appendix 4. Refer to Figure 25.

Le mécanisme de marquage de terme 300 faisait aussi appel, dans le cas d'une variable, à un mécanisme auxiliaire dit 'normalisation-liaison. Ce mécanisme auxiliaire 330 est illustré sur la figure 3A.The term marking mechanism 300 also used, in the case of a variable, an auxiliary mechanism called 'normalization-binding'. This auxiliary mechanism 330 is illustrated in FIG. 3A.

Il commence par un test 332, déterminant Si le statut de la va tle v concerne est libre ou indécis. S'il est libre, l'étape 334 établit oue le résultat de la normalisation est
'LIBRE' et lior passe à la fin en 335.
It begins with a test 332, determining whether the status of the group concerned is free or undecided. If it is free, step 334 establishes where the result of normalization is
'FREE' and lior passes to the end in 335.

Si ce statut est indécis, un nouveau test 336 détermine la nature du géniteur de la variable v. Si ce géniteur est mort, on passe à l'étape 338, qui consiste à mettre le statut de la variable g à libre, après quoi l'étape 339 établit à 'LIBRE' le résultat de la normalisation, et l'on passe à la fin en 340.If this status is undecided, a new test 336 determines the nature of the parent of variable v. If this parent is dead, we go to step 338, which consists in setting the status of the variable g to free, after which step 339 establishes "FREE" the result of normalization, and we go to the end in 340.

Le géniteur de la variable v étant coupé ou actif, l'étape 342 va rechercher le géniteur 'représentant', noté gr, du géniteur g considéré.The parent of variable v being cut or active, step 342 will look for the parent 'representative', denoted gr, of the parent g considered.

Après que ce représentant a été trouvé par le mécanisme de la figure 3B, l'étape 344 consiste à mettre la référence de ce géniteur représentant gr dans le champ 'géniteur' de la variable v.After this representative has been found by the mechanism of FIG. 3B, step 344 consists of putting the reference of this parent representing gr in the 'spawner' field of the variable v.

Si oui, l'étape 346 établit que le résultat de la normalisa tion est 'LIBRE' et c'est la fin 347. Sinon l'étape 347 établit que le résultat de la normalisation est 'LIEE' et c'est la fin 349.If so, step 346 states that the result of normalization is 'FREE' and that is the end 347. Otherwise, step 347 states that the result of normalization is 'LINKED' and that is the end. .

Le mécanisme de la figure 3A est décrit de manière plus détaillée et plus formelle à alpage 5 de l'annexe 4, dont les explications font référence aux figures 23 et 24. La figure 23 illustre ce qui se passe pour un géniteur mort, c'est-à-dire lorsque la sortie du test 336 va directement sur l'étape 338.The mechanism of FIG. 3A is described in more detail and more formally in alpage 5 of Appendix 4, the explanations of which refer to FIGS. 23 and 24. FIG. 23 illustrates what happens for a dead parent. that is, when the output of test 336 goes directly to step 338.

La figure 24 illustre le second cas de figure, dans l'hypothèse où la sortie du test 342 est non.Figure 24 illustrates the second case, assuming the output of the test 342 is no.

Ce qui précède permet un nettoyage convenable de la mémoire pour tout ce qui concerne les cellules constructeur et variable. Il a été précédemment indiqué que l'invention prévoit aussi un tel nettoyage dans le cas des géniteurs.The foregoing allows proper memory cleaning for everything related to the manufacturer and variable cells. It has previously been indicated that the invention also provides for such cleaning in the case of broodstock.

Il est par ailleurs nécessaire d'effectuer la normalisation de niveaux prévue à I'étape 370. Cette normalisation de niveaux concerne le champ f qui contient la référence au géniteur g.It is also necessary to carry out the standardization of levels provided for in step 370. This standardization of levels concerns the field f which contains the reference to the parent g.

La première étape 372 est la recherche du géniteur 'représentant', noté gr, du géniteur g. Ce mécanisme est déjà décrit à propos de la figure 3B.The first step 372 is the search for the 'representative' parent, denoted gr, of the parent g. This mechanism is already described with reference to FIG. 3B.

Le géniteur représentant gr ainsi déterminé est alors mis dans le champ f, à la place du géniteur g qui s'y trouvait précédemment, ce à l'étape 373, après quoi on passe à l'étape de fin 375.The parent representative gr thus determined is then put in the field f, instead of the parent g which was previously there, in step 373, after which we go to the end step 375.

Tout ce qui vient d'être décrit à propos des figures 3, 3A, 3B et 3C constitue des sous-mécanismes de l'étape 202 de la figure 2. Leur exécution est donc nécessairement suivie d'une décrémentation du niveau de marquage à l'étape 205.All that has just been described with regard to FIGS. 3, 3A, 3B and 3C constitute sub-mechanisms of step 202 of FIG. 2. Their execution is therefore necessarily followed by a decrementation of the level of marking at the end of FIG. step 205.

Ce mécanisme noté 400 dans son ensemble sera maintenant décrit à propos Ha la figure 4. This mechanism noted 400 as a whole will now be described in connection with Figure 4.

L'homme de l'art pourra se référer aux pages 6 et 7 de l'annexe 4, ainsi qu'à la figure 22.Those skilled in the art will be able to refer to pages 6 and 7 of Appendix 4, as well as to FIG.

La première étape 401 consiste à examiner si la nature du géniteur sommet est ou non 'coupée'. Si oui, l'étape 403 consiste en une mise à 'mort' de ce géniteur sommet. Le géniteur défini par son chars 1précédent' devient le nouveau géniteur sommet. fait retourne ensuite immédiatement en amont du test 401. The first step 401 is to examine whether or not the nature of the vertex parent is 'cut off'. If so, step 403 consists of a kill of this vertex parent. The parent defined by his predecessor floats becomes the new vertex parent. fact returns then immediately upstream of the test 401.

Il est maintenant possible, aqprès les traitements décrits plus haut, de mettre z more le géniteur coupé
De cette manière, on va rencontrer tôt ou tard un géniteur actif. La sortie non dn test 401 mène alors à l'étape 405.
It is now possible, after the treatments described above, to put z more the cut parent
In this way, we will sooner or later meet an active parent. The non-test output 401 then proceeds to step 405.

Cell-ci consiste @ mearquer la on les cellules occupées par le géniteur sommet. This consists of mearing the cells occupied by the vertex parent.

Après, l'étape 407 consiste à décrémenter le niveau de marquage d'une unité, dens le registre prévu à cet effet.After, step 407 is to decrement the level of marking of a unit, in the register provided for this purpose.

Si le niveau de marquage n'est pas négatif, on continue.If the level of marking is not negative, continue.

S'il est devenu négetil marquant la fin du marquage, c'est alors l'étape de fin 410 qui intervient. On sortira par l'étape de ramassage 500.If it has become negetil marking the end of the marking, it is then the end step 410 that occurs. We will leave by the pickup step 500.

Dans le cas contraire, l'étepe 411 vaq chager de géniteur sommet, tout en gardant la trace du géniteur sommet précédent
En d'autres terme cette étape réserve tout d'abord le géniteur sommet en cours. Elle prend le géniteur défini par son champ 'précédent' et en fait le nouveau géniteur sommet.
If not, extinguish 411 vaq of vertex parent, while keeping track of previous vertex
In other words, this step first reserves the current vertex parent. She takes the spawner defined by its 'previous' field and makes it the new vertex spawner.

L'étape 413 détermine alors le géniteur gr qui va être le représentant' du souveau géniteur sowr' Ce mécanisme a déjà été décrit propos de la figure 33
Ensuite, l'étape @15 zange la rérférence de ce géniteur repré sentant gr dans le champ ' 1précédent1 du géniteur réservé, c'est-ä-dire du géniteur sommet qui était en vigueur jusqu'à l'étape 411.
Step 413 then determines the parent gr who will be the representative of the parent sowr. This mechanism has already been described with reference to FIG.
Next, step @ zange the reference of this parent representing gr in the field 1previous1 of the reserved parent, that is, the vertex parent that was in effect until step 411.

Ensuite, l'étape 417 consiste à prendre les trois noms qui sont contenus dans le géniteur gr, et à ranger ces noms dans les registres nom 1, nom 2, nom 3. On termine alors à l'étape de fin 420. Cette étape retourne à l'étape 207 de la figure 2.Then, step 417 consists of taking the three names that are contained in the parent gr, and storing these names in the registers name 1, name 2, name 3. We then end at the end step 420. This step returns to step 207 of FIG.

La figure 22 montre, sur un exemple, comment ce mécanisme 400 permet la réorganisation des géniteurs d'une strate.Figure 22 shows, in one example, how this mechanism 400 allows the reorganization of the parents of a stratum.

Le mécanisme de marquage est maintenant complètement décrit.The marking mechanism is now completely described.

Il est suivi du mécanisme de ramassage 500 illustré sur la figure 5.It is followed by the pickup mechanism 500 shown in FIG.

Ce mécanisme recombine deux éléments qui sont séparés dans l'annexe 4. L'un, le ramassage proprement dit, est décrit à la page 7 de l'annexe 4, tandis que l'autre, la 'révisionstatut-cellule' est décrit à la page il de l'annexe 4.This mechanism recombines two elements which are separated in Annex 4. One, the actual collection, is described on page 7 of Annex 4, while the other, the 'cell-state revisions' is described in page 4 of Annex 4.

Ce ramassage consiste en une exploration de l'ensemble des cellules de la mémoire des statuts d'allocation, avec un indice i qui va explorer toutes les adresses possibles danscette mémoire (de même que dans la mémoire de désignation).This collection consists of an exploration of all cells of the allocation status memory, with an index i that will explore all the possible addresses in this memory (as well as in the designation memory).

A l'étape 501, lFindice i est initialement mise zéro. Le test 503 détermine ensuite si i a atteint l'adresse maximale possible en mémoire. Si oui, c'est la fin en 504.In step 501, the index i is initially set to zero. The test 503 then determines if i has reached the maximum address possible in memory. If so, it's the end in 504.

Sinon, l'étape 505 réalise une invalidation, des requêtes.Otherwise, step 505 performs invalidation, queries.

Le test 507 détermine alors si le-statut d'allocation de la cellule d'adresse i est la marque de la fournée précédente. Si oui, on met cette cellule à 'disponible', à l'étape 509. The test 507 then determines whether the allocation status of the address cell i is the mark of the previous batch. If yes, this cell is 'available' at step 509.

A ce niveau intervient un perfectionnement de l'invention, qui consiste à allouer immédiatement la cellule qui vient d'être libérée. Pour cela, le test 511 détermine s'il y a attente d'une allocation de cellule. Si oui, l'étape 513 alloue immédiatement la cellule qui vient d'être libérée et acquitte la requête correspondante.At this level is an improvement of the invention, which consists in immediately allocating the cell that has just been released. For this, the test 511 determines whether there is waiting for a cell allocation. If so, step 513 immediately allocates the newly released cell and acknowledges the corresponding request.

Dans tous les autres cas, y compris celui où la sortie du test 507 était non, on passe à l'étape 515, consistant à revalider les requêtes, et suivie d'une étape 517 incrémentant l'indice i d'une unité. On boucle alors sur l'étape 503, jusqu'à exploration de toutes les adresses de mémoire.In all other cases, including the one where the output of the test 507 was no, proceed to step 515, which consists in revalidating the requests, followed by a step 517 incrementing the index i by one unit. We then loop on step 503, until all memory addresses are scanned.

Intervenant uniquement sur le contenu de la mémoire de statuts d'allocation, le mécanisme 500 se déroulera de façon tros rapide, puisqu'il s'agit d'une mémoire rapide dont chaque élément ne possède que deux bits.Intervening only on the content of the allocation status memory, the mechanism 500 will run very quickly, since it is a fast memory where each element has only two bits.

Après tout cela, le processeur de gestion de mémoire se place en situation d'attente de fournée, jusqu'à nouvelle exécution du mécanisme de récupération.After all this, the memory management processor is placed in a batch standby situation, until the recovery mechanism is run again.

On notera maintenant qu'avec ces deux bits par élément, la mémoire de statuts d'allocation 15 possède un quatrième état, non encore utilisé jusqu'à présent. Ce quatrième état peut servir à soustraire certaines cellules de la mémoire 14 à l'action de récupération du processeur de gestion de mémoire 12. Cela est utile notamment si l'on désire stocker des informations de programme du processeur d'exécution 10 dans cette mémoire. Dans la variante simplifiée où la récupération de cellules ne se fait que dans la partie mémoire de désignation de la mémoire 14, les cellules définissant la pile des géniteurs sont alors mises elles aussi dans ce quatrième état, de façon à échapper à la récupération et au nettoyage qui sont effectués périodiquement par le processeur de gestion de mémoire 12. Note now that with these two bits per element, the allocation status memory 15 has a fourth state, not yet used. This fourth state can be used to subtract certain cells from the memory 14 to the recovery action of the memory management processor 12. This is useful especially if it is desired to store program information of the execution processor 10 in this memory . In the simplified variant where the recovery of cells is done only in the designation memory portion of the memory 14, the cells defining the stack of the parents are then also put in this fourth state, so as to escape the recovery and cleaning that are performed periodically by the memory management processor 12.

Seul le processeur d'exécution 10 peut alors libérer ces cellules, sur une requête explicite à cet effet, qui s'adresse au processeur de gestion de mémoire 12.Only the execution processor 10 can then release these cells, on an explicit request for this purpose, which is addressed to the memory management processor 12.

Dans ce-qui précède, le mécanisme de récupération de mémoire est mis en fonction par la commande 'réduire1. Il est avantageux,comme cela est décrit dans l'annexe 4, qu'il soit également initié par l'instruction 'reprendre'.In the foregoing, the memory recovery mechanism is turned on by the command 'reduce1. It is advantageous, as described in Appendix 4, that it is also initiated by the 'resume' instruction.

A la fin de l'annexe 4 se trouve encore décrit le détail des
synchronisations par requête intervenant dans le mode de réalisation à deux processeurs de la présente invention.
At the end of Annex 4 is still described the details of the
query synchronizations involved in the dual processor embodiment of the present invention.

De cette manière, avec un processeur d'exécution et un processeur de gestion de mémoire susoeptibles de fonctionner de manière totalement parallèle, on assure que la gestion de mémoire s'effectue non seulement de manière optimale, mais
aussi de manière très rapide.
In this way, with an execution processor and a memory management processor susoeptibles to operate in a completely parallel manner, it is ensured that the memory management is performed not only optimally, but
also in a very fast way.

Une variante de l'invention consisterait à utiliser un seul processeur qui fut spécialement microprogrammé, et ce processeur constituerait à lui seul les moyens de traitement
de l'invention. Il n'y a bien sûr plus de problèmes d'intercommunication comme précédemment. En revanche, ce processeur microprogrammé unique devra fonctionner en temps partagé, d'une part pour l'exécution, d'autre part pour la gestion de mémoire. Le Demandeur estime qu'il conviendra alors d'implanter le logiciel d'interprétation (prolog ou autre) dans un processeur classique, séparé, qui sera connecté de manière habituelle au processeur unique microprogrammé constituant à
lui seul les moyens de traitement.
A variant of the invention would be to use a single processor that was specially microprogrammed, and this processor alone would be the processing means
of the invention. Of course, there are no more intercommunication problems as before. On the other hand, this unique microprogrammed processor will have to work in timeshare, on the one hand for the execution, on the other hand for the management of memory. The Applicant considers that it will then be necessary to implement the interpretation software (prolog or other) in a conventional, separate processor, which will be connected in the usual way to the single microprogrammed processor constituting
he alone the means of treatment.

- ANNEXE 1 SPECIFICATION
NOTION DE BASE: ESPACE DE TERMES
Un triptet @TERMES. FEUILLES, CONSTRUCTEUSS@ est un ospace~de~iermes si
I CONSTRUCTEURS est une partie finie de (TERMESXTERMBS) - TERMES
I- FEUILLES C TERMES
I V l1, d1, g2, d2 e TERMES V cons1.cons2 e CONSTRUCTEURS
consl (g1,d1) = cons2(g2.d2) #
(cons1=cons2 st g1=g2 et d1=d2)
I Vte TERMES
t# FEUILLES #
@ g.d e TERMES @ CONS E constructeurs @=cons(g.d)
Commentaire:
Les TERMES sont des arbres binaires.Hs ont été préférés aux termes n-aires pour ieur @ustiché adaptée au degré de matérialtté de la mise-en-oeuvre projetée et pour leur souplesse. Ils ont le mme Qouvoir expressit que les termes n-aires et it peuvent servir de composants élémentaires pour une grande variété de structures, en particulier les listes de longueur variable. Leur morphologie homogène se prele bien m l'allocation dynamique d'un réservoir de cellules de mémoire toutes identiques et interchangeables.
- ANNEX 1 SPECIFICATION
BASIC CONCEPT: SPACE OF TERMS
A triptet @TERMES. SHEETS, CONSTRUCTEUSS @ is an ospace ~ of ~ iermes
I MANUFACTURERS is a finished part of (TERMESXTERMBS) - TERMS
I- SHEETS C TERMS
IV l1, d1, g2, d2 e TERMS V cons1.cons2 e BUILDERS
consl (g1, d1) = cons2 (g2.d2) #
(cons1 = cons2 st g1 = g2 and d1 = d2)
I Vte TERMS
t # SHEETS #
@ gd e TERMS @ CONS E constructors @ = cons (gd)
Comment:
The TERMS are binary trees. They have been preferred to the n-ary terms for their use adapted to the degree of materiality of the projected implementation and for their flexibility. They have the same power express that the terms n-areas and it can serve as basic components for a wide variety of structures, especially variable length lists. Their homogeneous morphology is well suited to the dynamic allocation of a reservoir of identical and interchangeable memory cells.

Il est prévu plusieurs constructeurs, en pratique un petit nombre. Grâce à eux, les applications disposent d'arguments de discrimination basés sur le type des termes construits, plutôt que sur un codage employant des feuilles réservées. It is expected several builders, in practice a small number. Thanks to them, applications have discrimination arguments based on the type of terms built, rather than an encoding using reserved sheets.

On espère ainsi une plus grande efficacité. We hope for greater efficiency.

Si la définition donnée ici est tres générale et tolère en particulier les termes infinis, les contraintes d'utilisation énoncées au sein de la spécification limitent le domaine représentable dans la machine aux termes finis arborescents.  If the definition given here is very general and tolerates in particular the infinite terms, the use constraints stated within the specification limit the domain that can be represented in the machine to finite tree terms.

NOTIONS DERIVEES: TERMESCONSTRUlTS, SOUS TERMES. REMPLACEMENT
FVt t e TERMES~CONSTRUITS #
f cons 6 Constructeurs F TG.LD E te%rmes t-cons(tg.td)
F SOUS~TERMES E TERMES - parties de TERMES
FVie TERMES
(te FEUILLes et SOUS~ TERMES(t) = (l)
ou J cons e CONSTRUCTEURS i tg.td E TERMES
t=cons(tg.td)
et SOUS~TERMES(t) =
{tg} U {td} u SOUS TERMES[tg] u SOUS~ TERMES[td]
@ REMPLACEMENT de ... par ... dans
E (TERMESxTERMESxTERMES) - TERMES
@ @ t1 t2, TERMES
t=t1 #
REMPLACEMENT de t1 par t2 dans t = t
et
(#t1 et t # FEUILLES) #
REMPLACEMENT de t1 par t2 dans t = t
et
(# t1 et t # FEUILLES)
#
@ cons e CONSTRUCTEURS @ ig.id e TERMES
T=cons(tg.td)
et REMPLACEMENT de il par t2 dans t =
cons(REMPLACEMENT de tl par t2 dans tg
REMPLACEMENT de tl par t2 dans td)
Commentaire::
Les TERMES~CONSTRUITS et les FEUILLES sont des ensembles disjoints et dont la réunion constitue les termes
SOUS~TERMES donne l'ensemble des sous-termes d'un terme. non compris lut-même.
DERIVED CONCEPTS: TERMSCONSTRUlTS, IN TERMS. REPLACEMENT
FVt TERMS ~ BUILDING #
f cons 6 Constructors F TG.LD E% t-cons (tg.td)
F SUB-TERMS E TERMS - parts of TERMS
FVie TERMS
(SHEETS and SUBTHEMS (t) = (l)
or J cons e BUILDERS i tg.td E TERMS
T = cons (tg.td)
and SOUS ~ TERMS (t) =
{tg} U {td} u UNDER TERMS [tg] u SUB-TERMS [td]
@ REPLACEMENT of ... by ... in
E (TERMSxTERMSxTERMS) - TERMS
@ @ t1 t2, TERMS
t = t1 #
REPLACEMENT of t1 by t2 in t = t
and
(# t1 and t # SHEETS) #
REPLACEMENT of t1 by t2 in t = t
and
(# t1 and t # SHEETS)
#
@ cons e MANUFACTURERS @ ig.id e TERMS
T = cons (tg.td)
and REPLACE it by t2 in t =
cons (REPLACE tl by t2 in tg
REPLACEMENT of tl by t2 in td)
Comment::
TERMS ~ CONSTRUCTS and SHEETS are disjoint sets and whose meeting constitutes the terms
SUB-TERMS gives the set of sub-terms of a term. not understood itself.

REMPLACEMENT remplace toute occurence d'un terme par un autre terme au sein d'un certain terme.  REPLACEMENT replaces any occurrence of a term with another term within a certain term.

NOTION DE BASE: ESPACE DE LISTES
Un quintuplet LISTES, ELEMENTS, EN~LISTE, LISTE~VIDE, TAILLE~LISTE# est un espace~de~listes si
I- EN~LISTE E (ELEMENTSXLISTES)#LISTES
# LISTE~VIDE E LISTES
1-# e1.e2 e ELEMENTS #17.12 e LISTES
EN~LISTE(e1.17) = EN~LISTE(e2.17) #
[e1=e2 et 11=12)
1-#1 e LISTES 1#LISTE~VIDE
#
#e1 e ELEMENTS # 17 e LISTES 1 = eN+LISTE (e1.17)
# TAILLE~LISTE e LISTES - entiers
# tAILLE~LISTE)LISTE~VIDE) = O
# Ve e ELEMENTS VI E LISTES
TAILLE~LISTE(EN-LISTE(e.1)) = TAILLE~LISTE(1) + 1
I E LISTES + n E entiers TAILLE~LISTE(I) = n
Commentaire:
Une LISTE est une collection ordonnée d'éléments. La fonction EN LISTE rajoute un élément en tète. TAILLE~LISTE donne le nombre d'éléments d'une liste.
BASIC CONCEPT: SPACE OF LISTS
A quintuplet LISTS, ELEMENTS, IN ~ LIST, LIST ~ EMPTY, SIZE ~ LIST # is a space ~ of ~ lists if
I- ENLISTE E (ELEMENTSXLISTES) #LISTES
# LIST ~ EMPTY LISTS
1- # e1.e2 e ELEMENTS # 17.12 e LISTS
EN ~ LIST (e1.17) = IN ~ LIST (e2.17) #
[e1 = e2 and 11 = 12)
1- # 1 st LISTS 1 # LIST ~ EMPTY
#
# e1 e ELEMENTS # 17 th LISTS 1 = eN + LIST (e1.17)
# SIZE ~ LIST LISTS - full
# tAILLE ~ LIST) LIST ~ EMPTY = O
# VI E LISTS
SIZE ~ LIST (IN-LIST (e.1)) = SIZE ~ LIST (1) + 1
IE LISTS + n E integers SIZE ~ LIST (I) = n
Comment:
A LIST is an ordered collection of elements. The ENLISTE function adds an element at the head. SIZE ~ LIST gives the number of items in a list.

NOTION DEAIVEE: SOUS~LISTES
# SOUS~LISTES E LISTES -? parties de LISTES ### e LISTES
( I = LISTE~VIDE e' SOUS~LISTES(1) = = J )
oti } e E ELEMENTS # 17 E LISTES
1 = EN-LISTE(e.11)
et SOUS~LISTES(1) = {17} U SOUS~LISTES(17)
Commentaire:
Les SOUS~LISTES d'une liste sont les listes obtenues en enlevant progressivement les éléments de tete.
NOTION DETAILED: SUB ~ LISTS
# SUB ~ LISTS E LISTES -? parts of LISTS ### e LISTS
(I = LIST ~ VACUUM UNDER ~ LISTS (1) = = J)
E ELEMENTS # 17 E LISTES
1 = IN-LIST (e.11)
and SOUS ~ LISTS (1) = {17} U SUB-LISTS (17)
Comment:
The SUB-LISTS of a list are the lists obtained by progressively removing the head elements.

DOMAINES UTILISES POUR LA DEFINITION DE LA MACHINE données. données1. données2. noms, marques~de~nature, marques de comparaison
i- données. données2 sont des ensembles finis disjoints
F données = données u données2
i- noms est un ensemble dénombrable
@ marques~de~nature = {c1, c2, v1, v2, d1, d2 niv}
@ marques~de~compariaison = {égal. différent, non~décidé}
Commentaire:
Cette rubrique spécifie les informations qui s'échangent entre la machine et l'utilisateur lors des commandes. -en plus du code de la commande.
FIELDS USED FOR THE DEFINITION OF THE MACHINE data. data1. data2. names, ~ marks of nature, comparison marks
i- given. data2 are disjointed finite sets
F data = data u data2
i- nouns is a countable whole
@ marks ~ of ~ nature = {c1, c2, v1, v2, d1, d2 niv}
@ marks ~ of ~ compariation = {equals. different, not ~ decided}
Comment:
This topic specifies information that is exchanged between the machine and the user when ordering. -in addition to the order code.

En ce qui concerne les données. la compétence de la machine se limite à pouvoir les mémoriser et les comparer. Par contre. l'utilisateur disposera en général de mécanismes leur conférant une signification particulière. par exemple arithmétique ou textuelle Pour plus de commodité. deux formats sont prévus: les données et les données2. Regarding the data. the skill of the machine is limited to being able to memorize and compare them. On the other hand. the user will generally have mechanisms giving them a special meaning. for example arithmetic or textual For convenience. two formats are provided: data and data2.

En ce qui concerne les noms. ils sont sous la maitrise de la machine: elle décide de l'évolution dynamique de leur signification. et elle seule peut les
Interpréter réellement. L'utilisateur ne peut rien faire des noms que la machine lui révèle. sinon les mémoriser. et les re-citer tot ou tard lors d'une commande, ou les oublier.
Regarding the names. they are under the control of the machine: it decides on the dynamic evolution of their meaning. and she alone can
Really interpret. The user can not do anything that the machine tells him. otherwise memorize them. and re-quote them sooner or later when ordering, or forget them.

Les diverses marques servent dans le cadre de conventions communes entre la machine et l'utilisateur. pour discriminer un cas parmi plusieurs possibles dans certaines situations. The various brands are used in the context of common conventions between the machine and the user. to discriminate one of several possible cases in certain situations.

varlabies1. yariables2. variables. niveaux. atomes, cons. cons2. constructeurs.varlabies1. yariables2. variables. levels. atoms, cons. soll2. manufacturers.

termes. sous termes. remplacement. construitsl. construits2
@ niveaux = entiers
i- variablesl variables2 sont des ensembles dénombrables disjoints
i- variables = variablesl U variables2
i- variables. données. niveaux sont disjoints
i- atomes = données u niveaux
@ constructeurs = {cons1. cons2}
@ @termes. variables @ atomes constructeurs @ est un espace~de~termes
avec termes~construits. sous~termes. remplacement
en tant que notions dérivées
TERMES~CONSTRUITS, SOUS~TERMES.REMPLACEMENT
tant (t E construitsl < = > i tg,td E termes t=conslCtg.td) )
@@t ( t E construits2 < = > i tg.td E termes t=cons2ttg.td) )
Commentaire:
Cette rubrique spécifie la sorte d'information conservée par la machine. Parmi les termes. seules les données peuvent etre échangées avec j utilisateur. Les autres termes restent confinés dans la machine et ne sont accessibles à l'utilisateur qu'indirectement en pratiquant les commandes répertoriées et des noms décidés par la machine elle-meme.
terms. under terms. replacement. construitsl. construits2
@ levels = integers
i- variablesl variables2 are disjoint countable sets
i- variables = variablesl U variables2
i- variables. data. levels are disjointed
i- atoms = data u levels
@ constructors = {cons1. soll2}
@ @terms. variables @ atoms constructors @ is a space ~ of ~ terms
with ~ built terms. in ~ terms. replacement
as derived notions
TERMS ~ CONSTRUCTED, SUB ~ TERMS.REMPLACEMENT
so (t E constructsl <=> i tg, td E terms t = conslCtg.td))
@@ t (t E constructed2 <=> i tg.td E terms t = cons2ttg.td))
Comment:
This topic specifies the kind of information the machine keeps. Among the terms. only the data can be exchanged with the user. The other terms remain confined in the machine and are accessible to the user only indirectly by practicing the listed commands and names decided by the machine itself.

Les variables constituent une sorte particulière de feuilles. Elles servent à introduire une relation supplémentaire entre termes. la relation "être une instance". Un terme est une instance d'un autre terme s'il s'obtient en remplaçant certaines des variables de ce dernier par d'autres termes. Dans la littérature, on emploie également les expressions "t2 subsume t1- ou ^t2 shématise ti" en place de -t1 est une instance de t2-. Pour faciliter l'interprétation aie notions propres å certains langages logiques, et éviter des codages peu performants de la part de l'utilisateur. la machine offre deux classes de variables: les variables et les variables2. Variables are a special kind of leaf. They serve to introduce an additional relationship between terms. the relationship "to be an instance". A term is an instance of another term if it is obtained by replacing some of the variables of the latter by other terms. In the literature, the terms "t2 subsume t1-" or "t2 shematize ti" in place of -t1 is also used as an instance of t2-. To facilitate the interpretation of concepts specific to certain logical languages, and avoid poor coding by the user. the machine offers two classes of variables: variables and variables2.

Les niveaux sont des atomes particuliers qui peuvent etre captés et conservés par l'utilisateur et qui iui permettent d'effectuer certains contrées sur l'état de sauvegarde. Levels are special atoms that can be picked up and stored by the user and allow them to perform certain states on the backup state.

La figure 6 illustre comment se répartissent les diverses classes de termes. Figure 6 illustrates how the various classes of terms are distributed.

.L ,&num; termes
Commentaire :
1 est un élément utilise dans la spécification pour ;ouer le rôle d'"indéfini",
Définition : désignations
désignations est l'ensemble ainsi défini::
De désignations #
D e noms # (termesu{@})
et V n s noms
3 cons s constructeurs 3 tg,td E termes
D(n) = cons(tg t@)
1 i ng.nd E noms C D(ng)=tg et D(nd=td )
Commentaire:
Une désignation est tee que si un terme est désignable. c'est-a-dire s'il existe un nom qui désigne ce terme. tous ses sous-termes le sont aussi.
.L, &num; terms
Comment:
1 is an element used in the specification to replace the role of "undefined",
Definition: designations
designations is the set thus defined ::
Designations #
Names # (termsu {@})
and V ns names
3 builders 3 tg, td E terms
D (n) = cons (tg t @)
1 i ng.nd E names CD (ng) = tg and D (nd = td)
Comment:
A designation is tee only if a term is designatable. that is, if there is a name for that term. all its sub-terms are too.

Une des composantes de l'état de la machine est une designation et sert a exprimer quels sont. a tout moment. les termes accessibles à l'utilisateur. One of the components of the state of the machine is a designation and serves to express what are. at any time. terms accessible to the user.

et via quels noms. L'utilisateur dispose de commandes pour faire évoluer cet état de désignation. and via which names. The user has commands to change this designation state.

sauvegardes, sous sauvegardes, sauve. sauvegardeuide. taille
sauvegardes, termesxtermesxtermes. sauve. sauvegardeuide. taille >
est un espace~de~listes avec
sous~sauvegardes en tant que notion dérivée SOUS~LISTES
Commentaire:
Une sauvegarde est une pile de triplets de termes. Chaque triplet constitue une strate de la pile. Le nombre de termes dans une strate a été choisi égal a trois pour obtenir une bonne souplesse d'utilisation.
backups, under backups, save. sauvegardeuide. cut
backups, termsxtermsxterms. saves. sauvegardeuide. size>
is a ~ space of ~ lists with
under ~ backups as a derived notion under ~ LISTS
Comment:
A backup is a stack of term triplets. Each triplet constitutes a stratum of the stack. The number of terms in a stratum has been chosen equal to three to obtain a good flexibility of use.

Une des composante de l'état de la machine est une sauvegarde, l'utilisateur dispose de certaines commandes pour modifier cette sauvegade, c'est a dire. One of the components of the state of the machine is a backup, the user has some commands to modify this backup, ie.

empiler une strate, dépiler une strate, capter l'état de sauvegarde courant sous forme d'un niveau et le recycler plus tard en tant que paramètre d'une commande de modification de l'état de sauvegarde a ce moment a. stack a layer, unpick a layer, capture the current backup state as a level, and recycle it later as a parameter of a save state change command at this time a.

NATURE DE LA MACHINE: COMMANDES. PARAMETRES. RESULTATS. ETAT.NATURE OF THE MACHINE: ORDERS. SETTINGS. RESULTS. STATE.

L'utilisateur soumet des commandes a la machine séquentiellement au cours du temps. The user submits commands to the machine sequentially over time.

Toute commande a pour composantes un code de commande et en général des composantes complémentaires qui appartiennent à des domaines divers selon la commande, et qui sont précisées sous la rubrique 'entrées" dans la spécification de la commande. Le résultat rendu par la machine en réponse å une commande a ses composantes dans des domaines qui dépendent aussi de la commande considérée, et qui sont précisées sous la rubrique 'sorties" dans la spécification. Each order has as components a command code and in general complementary components which belong to various domains according to the order, and which are specified under the heading 'entries' in the order specification. å a command has its components in areas that also depend on the command considered, and are specified under the heading 'outputs' in the specification.

Entre deux soumissions de commandes la machine a un état qui est un élément de
désignations x sauvegardes.
Between two order submissions the machine has a state that is an element of
designations x backups.

La soumission d'une commande fait passer l'état de < Davant.Savant > à < Daprèa,Saprèa > . Entre Davant, Savant. les entrées de la soumission. Après. Sapres et les sorties de la soumission, il y a la relation
CONTRAINTE = > EVOLUTION
où CONTRAINTE et EVOLUTION sont les relations postes respectivement sous les rubriques "contrainte" et 'évolution' dans la spécification de la commance.
Submission of an order changes the state from <Davant.Savant> to <Daprèa, Saprèa>. Between Davant and Savant. submission entries. After. Sapres and the outputs of the submission, there is the relationship
CONSTRAINT => EVOLUTION
where STRESS and EVOLUTION are the relations respectively under the headings "constraint" and "evolution" in the specification of the commanche.

Commentaire:
Les deux composants d'un état < D,S > peuvent se comprendre de la façon suivante.
Comment:
The two components of a state <D, S> can be understood in the following way.

- D constitue l'"état de désignation des termes". Une famille de commandes le concerne et fait changer la signification des noms. - D is the "state of designation of terms". A family of commands concerns him and changes the meaning of names.

- S constitue l'"état de sauvegarde". Des commandes spécifiques permettent de le faire évoluer a' la manière d'une pile. Ces commandes ont aussi l'effet annexe d'affecter ou consulter l'état de désignation. - S is the "backup state". Specific commands allow it to evolve in the manner of a stack. These commands also have the side effect of assigning or consulting the designation status.

Quand l'utilisateur ne respecte pas la contrainte associée à une commande, l'effet est indéfini. Si l'utilisateur est mal conçu. et risque par exemple de citer lors d'une commande un nom ne signifiant rien. ou signifiant un terme par hasard. le concepteur est dans l'impossibilité de prouver que la relation de la rubrique "contraintes" est toujours vraie. When the user does not respect the constraint associated with a command, the effect is undefined. If the user is poorly designed. and risk for example to quote during an order a name meaning nothing. or meaning a term by chance. the designer is unable to prove that the relationship of the "constraints" heading is always true.

REPERTOIRE DES COMMANDES
Les commandes peuvent entre regroupées selon les familles suivantes:
Manipulation de la désignation des termes:
construire, créer~variable, substituer, accéder~gauche, accéder-droite
créer~donnéel, créer-donnée2, accéder~donnéel, accéder~donnée2
tester~nature, comparer
Manipulation des sauvegardes:
sauvegarder, reprendre, obtenir~niveau~courant. couper
ération de mémoire :
réduire
Initialisation: initlaliser
Commande construire
Entrées: ng.nd E noms m E (ci.c2j
Sorties: nt E noms
Contrainte: Davant < ng)/1 et Davant(nd) # @
Evolution:
( m=cl et Daprès (n@ = consl (Davant(ng).Davant(nd) )
ou ( m=c2 et Daprès(nt)=cons2(Davant(ng), Davant(nd)) )
et V n E noms ( Davantin)zi # Daprès(n)=Davant(n) )
et SaNés=Savant
Commentaire:
La commande construire crée la représentation d'un terme construit, accessible ensuite par le nom rendu en résultat.
DIRECTORY OF ORDERS
Orders can be grouped according to the following families:
Manipulation of the designation of terms:
build, create ~ variable, substitute, access ~ left, access-right
create ~ data, create-data2, access ~ data, access ~ data2
test ~ nature, compare
Handling backups:
save, resume, get ~ level ~ current. cut
memory creation:
reduce
Initialization: Initiate
Build command
Inputs: ng.nd E names m E (ci.c2j
Outputs: nt E names
Constraint: Davant <ng) / 1 and Davant (nd) # @
Evolution:
(m = cl and Dafter (n @ = consl (Davant (ng). Before (nd))
or (m = c2 and Dafter (nt) = cons2 (Davant (ng), Davant (nd)))
and V n E names (Davantin) zi # Dafter (n) = Davant (n))
and SaNés = Savant
Comment:
The construct command creates the representation of a constructed term, which can then be accessed by the rendered name.

Commande créer~variable
Entrfss: m E (v.v2)
Sorties: nv E noms
Evolution:
( m=vl et Daprès(nv) E variables i )
ou ( m=v2 et Dapres(nv) E variables2 )
et Davant(nv)=l
et V n e noms
Davant(n)#@ # (Daprès(n)=Davant(n) et Daprès(nv)#Davant(n))
et Saprès=Savant
Commentaire:
La commande créer~variable crée une nouvelle variable. accessible ensuite par le nom rendu en résultat.La variable est nouvelle en ce sens qu'elle n'était pas accessible auparavant par désignation,
Commande substituer
Entrées: nv.nt E noms
Contrainte:
Davant(nv) e variables et Davant(nt)#@
et Davant(nv) ,&num; sous~termes(Davant(nt))
Evolution:
V n e noms
Davant(n)#@
#
Daprès(n) = remplacement de Davant(nv) par Davant(nt) dans Davant(n)
et Saprés=Savant
Commentaire:
La commande substituer modifie tous les termes accessibles par la désignation courante, en y remplaçant toute occurence d'une variable donnée par un terme donné. Par contre les termes sauvegardés dans la pile ne sont pas affectés.
Create command ~ variable
Entrfss: m E (v.v2)
Outputs: nv E names
Evolution:
(m = vl and Dafter (nv) E variables i)
or (m = v2 and Dapres (nv) E variables2)
and Davant (nv) = l
and V no names
Davant (n) # @ # (After (n) = Davant (n) and After (nv) #Before (n))
and Saprès = Savant
Comment:
The create ~ variable command creates a new variable. The variable is new in the sense that it was not previously accessible by designation.
Replace command
Inputs: nv.nt E names
Constraint:
Davant (n) e variables and Davant (nt) # @
and Davant (nv), &num; sub ~ terms (Davant (s))
Evolution:
V names
Davant (n) # @
#
After (n) = replacement of Davant (nv) by Davant (nt) in Davant (n)
and Saprés = Savant
Comment:
The substitute command modifies all the terms accessible by the current designation, replacing any occurrence of a given variable by a given term. However, the terms saved in the stack are not affected.

La machine ne permet de représenter que des termes finis non bouclés. c'est à dire qui ne sont pas sous-termes d'eux-meme. L'utilisateur est responsable du respect de cette limitation. la machine ne faisant pas de vérifications pour des raisons d'efficacité.  The machine only makes it possible to represent finite terms that are not looped. that is, that are not sub-terms of themselves. The user is responsible for compliance with this limitation. the machine does not perform checks for reasons of efficiency.

Commande créer donnéel
Entrées: d E données
Sorties: nd E noms
Evolution:
Daprès (nd)=d
et V n E noms ( Davant (n) # 1 = > Doprès(n)=Darant(n) )
et SaprEs=Savant
Commande créer donnée2
Entrées: d E données2
Sorties: nd E noms
Evolution:
Deptès(no)=d
et V n E noms ( Davant(n)#1 = > Daprès(n)=davant(n))
et Saprès=Sarant
Commentaire:
Les commandes créer~donncel et créer~donnée2 permettent d'obtenir une désignation pour une donnée de type i ou 2. k'utilisateur peut alors la faire intervenir dans des constructions de termes grace aux commandes telles que construire ou substituer.
Order create data
Inputs: d E data
Outputs: nd E names
Evolution:
After (nd) = d
and V n E names (Davant (n) # 1 => Doprès (n) = Darant (n))
and SaprEs = Savant
Command create data2
Inputs: d E data2
Outputs: nd E names
Evolution:
Deptès (No.) = d
and V n E names (Davant (n) # 1 => After (n) = before (n))
and Saprès = Sarant
Comment:
The commands create ~ donncel and create ~ data2 make it possible to obtain a designation for data of type i or 2. The user can then use it in term constructions thanks to commands such as construct or substitute.

Commande accéder~donnéel
Entrées: nd E noms
Sorties: d E données
Contrainte: Davant(nd) e données1
Evoiution:
d=Davant(nd) et Daprés=Davant
et SaprEs=Savant
Commande accéder~donnée2
Entrées: nd E noms
Sorties: d E données2
Contrainte: Davant(nd) s données2
Evolution:
d=davant(nd) et Daprès=Davant
et Saprès=Savant
Commentaire:
Les commandes accéder~donnée1 et accéder~donnée2 restituent la donnée de type 1 ou 2 désignée.
Command access ~ given
Entries: nd E names
Outputs: d E data
Constraint: Davant (nd) e data1
Evoiution:
d = Davant (nd) and Daprés = Davant
and SaprEs = Savant
Command access ~ data2
Entries: nd E names
Outputs: d E data2
Constraint: Davant (nd) s data2
Evolution:
d = before (nd) and Daprès = Davant
and Saprès = Savant
Comment:
The commands access ~ data1 and access ~ data2 return the data type 1 or 2 designated.

Commande accéder~gauche
Entrées: n E noms
Sorties: ng E noms
Contrainte: Davant(n) E termes~construits
Evolution:
# cons E constructeurs + td E termes Davant(n)=cons(Davant(ng),(d)
et Daprès=Davant
et Saprès=savant
Commande accéder droite
Entrées: n E noms
Sorties: nd E noms
Contrainte: Davant(n) etermes~construits
Evolution:
+ cons E constructeurs # tg E termes Davant(n)=consCtg,Davant(nd))
et Daprès=Davant
et Saprès=savant
Commentaire:
Les commandes accéder-gauche et accéder~droite permettent d'accéder aux sous-termes des termes couramment accessibles.
Command access left
Inputs: n E names
Outputs: ng E names
Constraint: Davant (n) E terms ~ constructed
Evolution:
# cons E constructors + td E terms Davant (n) = cons (Davant (ng), (d)
and Daprès = Davant
and Saprès = scholar
Command access right
Inputs: n E names
Outputs: nd E names
Constraint: Davant (n) eterms ~ built
Evolution:
+ cons E constructors # tg E terms Davant (n) = consCtg, Davant (nd)
and Daprès = Davant
and Saprès = scholar
Comment:
The commands access-left and access ~ right allow access to sub-terms of the terms commonly available.

Commande tester~nature
Entrées: n enoms
Sorties: m E marques~de~nature
Contrainte: Davant(n)/1
Evolution:
( Davant(n) E construitsl et m=c1 )
ou ( Davant(n) E construits2 et m=c2 )
ou ( Davant(n) E variablesi et m=vl )
ou ( Davant(n) E variables2 et m=v2 )
ou ( Davant(n) E données1 et m=dl )
ou ( Davant(n) E données2 et m=d2 )
ou ( Davant(n) e niveaux et m=niv )
et Daprbs=Davant
et Saprbs=Savant
Commentaire:
La commande tester~nature révèle la nature du terme désigné parmi les diverses classes ultimes de termes illustrées sur la figure 6.
Order test ~ nature
Entries: n enoms
Outputs: m E marks ~ of ~ nature
Constraint: Davant (n) / 1
Evolution:
(Davant (n) E constructsl and m = c1)
or (Davant (n) E constructed2 and m = c2)
or (Davant (n) E variablesi and m = vl)
or (Davant (n) E variables2 and m = v2)
or (Davant (n) E data1 and m = dl)
or (Davant (n) E data2 and m = d2)
or (Davant (n) e levels and m = niv)
and Daprbs = Davant
and Saprbs = Savant
Comment:
The test ~ nature command reveals the nature of the term designated among the various ultimate classes of terms illustrated in Figure 6.

Commande comparer
Entrées: nl.n2 E noms
Sorties : m e marques~de~comparaison
Contrainte: Davanf(ni)/1 et Davant(n2)##
Evolution:
Daprès=Davant
et m=égal # Davant(n1)=Davant(n2)
et m=diff6rent = > Davant(n1)#Davant(n2)
et
m=non~décidé
C Davant n1) # termes~construits et Davant(n2) # termes~construits )
et Saprès=Savant
Commentaire:
La commande comparer ne permet pas de comparer de façon systématiquement décisive deux termes construits quelconques.Dans le cas de deux termes construits, cette opération, nécessite généralement un parcours des deux termes qui ferait double emploi. dans les applications visées, avec les parcours commandés par l'utilisateur pour ses propres raisons.
Compare command
Inputs: nl.n2 E names
Outputs: me marks ~ of ~ comparison
Constraint: Davanf (ni) / 1 and Davant (n2) ##
Evolution:
DAfter = Davant
and m = equal # Davant (n1) = Davant (n2)
and m = different => Davant (n1) #Before (n2)
and
~ m = not decided
C Davant n1) # terms ~ built and Davant (n2) # terms ~ built)
and Saprès = Savant
Comment:
The compare command does not make it possible to compare in a systematically decisive way any two constructed terms. In the case of two constructed terms, this operation generally requires a two-term course that would be redundant. in the targeted applications, with the courses ordered by the user for his own reasons.

Si deux termes construits sont égaux, la machine répond en général non-décidé, mais il se peut qu'elle réponde égal si la méthode de réalisation fait qu'elle parvient à cette décision de façon directe. If two constructed terms are equal, the machine usually responds unsettled, but it may respond equally if the method of realization makes it reach this decision in a direct way.

commande sauvegarder
Entrées: n1,n2,n3 E noms
Contrainte: Davant(nl);l et Davant(n2)# et Davant(n3)/1
Evolution:
Dapréa= Devant
et Après = sauve( < Davant(n1), Davant(n2).Davant(n3) > , Savant)
Commentaire:
La commande sauvegarder permet à l'utilisateur de conserver un vecteur d'état constitué de trois termes. tout en poursuivant le processus de transformation de la collection des termes couramment désignables.
save command
Inputs: n1, n2, n3 E names
Constraint: Davant (nl); l and Davant (n2) # and Davant (n3) / 1
Evolution:
Daprea = Front
and After = save (<Davant (n1), Davant (n2). Before (n3)>, Savant)
Comment:
The save command allows the user to keep a state vector consisting of three terms. while continuing the process of transforming the collection of commonly-designatable terms.

Le vecteur d'état peut Outre récupéré par la suite tel qu'il a été sauvegardé, en pratiquant la commande reprendre. Il n'est pas affecté par les opérations qui se déroulent entre sa sauvegarde et sa reprise: en particulier. les commandes substituer n'effectuent pas de remplacements de variables dans les termes sauvegardés. L'ordre des sauvegardes et des reprises se fait selon le principe que le dernier sauvegardé est le premier repris: la mémoire de sauvegarde fonctionne donc en pile.  The state vector can in addition subsequently retrieved as it was saved, by practicing the resume command. It is not affected by the operations that take place between its backup and recovery: in particular. replace commands do not perform variable replacements in the saved terms. The order of backups and recoveries is done according to the principle that the last saved is the first one taken back: the backup memory runs in stack.

Commande reprendre
Sorties: n'.,r'.2.n3 E noms
Contrainte: Savant t sauvegardevlde
Evolution:
Savant = sauve( < Daprès(n1), Daprès (n2), Daprès(n3) > . Saprs )
Commentaire:
La commande reprendre. dans le cas où la pile de sauvegarde n'est pas vide.
Resume command
Outputs: n '., R'.2.n3 E names
Constraint: Savant t backupevlde
Evolution:
Savant = saves (<After (n1), After (n2), After (n3)> Saprs)
Comment:
The command resume. in case the backup battery is not empty.

rend à nouveau accessible un vecteur d'état constitue de trois termes. Seuls ces termes et leurs sous-termes deviennent alors couramment désignables. Le processus de transformation en cours avant la commande est donc abandonné et remplacé par la reprise du processus de transformation figuré par le vecteur d'état récupéré.makes accessible again a state vector consists of three terms. Only these terms and their sub-terms then become commonly designatable. The transformation process in progress before the command is thus abandoned and replaced by the resumption of the transformation process represented by the recovered state vector.

Commande obtenir niveau courant
Sorties: np E noms
Evolution: Daprt(np)=taille(Savanl)
et V ni E noms ( Davant(ni)ti = > Dapr(nl)=Davant(nl) )
et Saprèa=Savant
Commentaire:
Les commandes obtenir~niveau~courant et couper sont à la disposition de l'utilisateur pour lui permettre d'effectuer un controle complexe de la gestion des sauvegardes.
Command get current level
Outputs: np E names
Evolution: Daprt (np) = size (Savanl)
and V nor E names (Davant (ni) ti => Dapr (nl) = Davant (nl))
and Saprèa = Savant
Comment:
The commands get ~ level ~ current and cut are available to the user to enable him to perform a complex control of the management of backups.

La commande obtenir~niveau~courant rend la taille de la pile courante. The command get ~ level ~ current makes the current stack size.

désignable en tant que niveau. Comme pour n'importe quel atome, l'utilisateur peut conserver des niveaux de piles. les comparer et construire des termes les contenant. Cependant. bien que les niveaux soient des entiers. l'utilisateur ne dispose pas de commandes arithmétiques pour les manipuler; la seule commande susceptible de les interpréter est couper. designatable as a level. As with any atom, the user can maintain battery levels. compare them and build terms containing them. However. although the levels are integers. the user does not have arithmetic commands to manipulate them; the only command that can interpret them is cut.

Par propriétés des commandes du répertoire. les niveaux couramment dèsignables sont toujours inférieurs ou égaux à la taille de la pile de sauvegarde courante. De plus, les niveaux conservés dans les éléments d'une pile de sauvegarde quelconque sont toujours strictement inférieurs à la taille de cette pile.  By properties of the directory commands. commonly-readable levels are always less than or equal to the size of the current backup stack. In addition, the levels stored in the elements of any backup stack are always strictly smaller than the size of this stack.

Commande couper
Entrées: np e noms
Contrainte: Davant(np) E niveaux
Evolution:
#n1 e noms
Davant(n1)## # Daprès(n1)=coupé(Davant(np))
et Saprès E SOUS~sauvegardes(Savant)
et tailIe(Sapré)=Davant{np)
Commentaire:
La commande couper permet de supprimer au sommet de la pile de sauvegarde un certain nombres de vecteurs d'état. La nouvelle pile de sauvegarde est la sous-pile de la pile courante dont la taille est égale au niveau donné en paramètre de la commande.
Cut command
Entries: np e names
Constraint: Davant (np) E levels
Evolution:
# n1 e names
Davant (n1) ## # After (n1) = cut (Davant (np))
and Saprès E SOUS ~ saves
and tail (Sapré) = Davant {np)
Comment:
The cut command is used to delete a certain number of state vectors at the top of the backup stack. The new backup stack is the sub-stack of the current stack whose size is equal to the level given in parameter of the command.

Afin de conserver la propriété mentionnée, les niveaux qui sont accessibles depuis les termes désignables et qui sont supérieurs à la taille de la nouvelle pile sont diminués et rendus égaux à la taille de la nouvelle pile. In order to maintain the mentioned property, the levels that are accessible from the designatable terms and that are greater than the size of the new stack are decreased and made equal to the size of the new stack.

Définition: coupé
coupé e (termes x niveaux) # termes
et V t E termes V n E niveaux
(1 # niveaux et t # termes~construits et coupé(t.n.)=t)
ou C t E niveaux et 1#n et coupé(t.n)=t )
ou ( t e niveaux et t > n et coupé(t,n)=n )
ou p cons E constructeurs 3 lg ,td X termes
t=cons (tg .td)
et coupé < t.n3 = cons(coupé(tg.n.). coupé (td.n.)
Commentaire:
coupé(t,n) donne le terme déduit de t en remplaçant dans ce dernier tout niveau supérieur à n par n.
Definition: cut
cut e (terms x levels) # terms
and V t E terms V n E levels
(1 # levels and t # terms ~ built and cut (tn) = t)
or C t E levels and 1 # n and cut (tn) = t)
or (te levels and t> n and cut (t, n) = n)
or p cons E constructors 3 lg, td X terms
t = cons (tg .td)
and cut <t.n3 = cons (cut (tg.n.). cut (td.n.)
Comment:
cut (t, n) gives the term deduced from t by replacing in the latter any level greater than n by n.

Commande réduire
Entrées: ni,n2.n3 E noms
Sorties : nn1, nn2, nn3 e noms
Contrainte: Davant(ni)t1 et Davanl(n2)ti et Davant(n3)/1
Evolution:
Daprès (nn1 )=Davant(n 1) et Daprâa(nn2)=Davant(n2) et Daprbs (n n3) =Davant(n3 >
et Sapra=Savanr
Commentaire:
Après une commande réduire, les termes couramment accessibles sont réduits à trois termes et leurs sous-termes.
Reduce command
Inputs: ni, n2.n3 E names
Outputs: nn1, nn2, nn3 e names
Constraint: Davant (ni) t1 and Davanl (n2) ti and Davant (n3) / 1
Evolution:
After (nn1) = Davant (n 1) and Daprâa (nn2) = Davant (n2) and Daprbs (n n3) = Davant (n3>
and Sapra = Savanr
Comment:
After a reduce command, commonly accessible terms are reduced to three terms and their sub-terms.

Cette commande concerne la gestion automatique des ressources de mémoire. This command is for automatic management of memory resources.

Elle se situe donc sur un autre plan que les autres commandes du point de vue strict des possibilités de calcul. Cette commande est rendue nécessaire par la nature, délibérément choisie, de la relation entre la machine et son utilisateur. L'utilisateur est extérieur à la machine, en ce sens qu'il a son propre contrôle et ses propres mémoires Inconnus de la machine. Toute information créée pour i'utilisateur peut donc à priori etre utilisée dans le futur. La commande réduire permet à l'utilisateur de faire connaitre les informations, restreintes à trois termes, qui l'intéressent pour la suite. La machine peut alors en déduire que l'information portée par certaines ressources de mémoire n'est plus utile à la représentation de l'état abstrait, parce- que devenue inaccessible à l'utilisateur. Elle peut récupérer ces ressources et les recycler pour une nouvelle utilisation.It is therefore on a plane other than the other commands from the strict point of view of the possibilities of calculation. This command is made necessary by the deliberately chosen nature of the relationship between the machine and its user. The user is outside the machine, in the sense that he has his own control and his own unknown memories of the machine. Any information created for the user can therefore be used in the future. The reduce command allows the user to make known the information, restricted to three terms, which interest him for the future. The machine can then deduce that the information carried by certain memory resources is no longer useful for the representation of the abstract state, because it has become inaccessible to the user. It can recover these resources and recycle them for a new use.

La commande reprendre provoque également le meme mécanisme de récupération: ceci est possible car la désignation est alors réduite aux trois noms rendus en résultat. Cependant, sans la commande réduire. les séquences
Ininterrompues de manipulations de la désignation entraineraient l'occupation d'une quantité croissante de mémoire, conduisant Inéluctabîement à la saturation du système comme celà se produit dans les interpréteurs PROLOG existants.
The resume command also causes the same recovery mechanism: this is possible because the designation is then reduced to the three names rendered in the result. However, without the command reduce. the sequences
Uninterrupted manipulations of the designation would result in the occupation of an increasing amount of memory, leading ineluctably to the saturation of the system as it occurs in existing PROLOG interpreters.

Commande Initialiser
Evolution: Saprêa=sauvegardevide
Commentaire:
La commande initlaliser fait passer la machine dans un état sain. La pile de sauvegarde est vide et aucun terme n'est conservé par la machine.
Initialize command
Evolution: Saprêa = safeguarded
Comment:
The initlaliser command puts the machine into a healthy state. The backup battery is empty and no term is retained by the machine.

- ANNE > :E 2
STRUCTURES DE DONNEES ET REPRESENTATION
STRUCTURES DE DONNEES
TYPES DES INFORMATIONS marque~de~nature AVEC L'UTILISATEUR donnée 1
donnée2
ECHANGEES a pour valeurs possibles (ci,c2,v1,v2.dl,d2,nlv3
marque~de~comparaison a pour valeurs possibles {éga@ différent,non~décidé}
nom est une structure à plusieurs champs
indicateur : marque~de~nature
Information @référence ou donnée
Commentaire:
Les types d'information donnée. donnée2. marque~de~nature.
- ANNE>: E 2
DATA STRUCTURES AND REPRESENTATION
DATA STRUCTURES
TYPES OF INFORMATION ~ brand ~ nature with the given user 1
data2
EXCHANGES has for possible values (ci, c2, v1, v2.dl, d2, nlv3
~ ~ comparison mark has for possible values {ega @ different, not ~ decided}
name is a multi-field structure
indicator: mark ~ of ~ nature
Information @ reference or data
Comment:
The types of information given. data2. ~ ~ kind of brand.

marque~de~comparaison et nom correspondent respectivement aux ensembles @@nnées1. données2. marques~de~nature. marques~de~comparaison et noms.~ ~ mark of comparison and name respectively correspond to sets @@ nne1. data2. ~ ~ kind of brands. ~ comparison marks and names.

'%t' type référence est d'usage purement interne bla machine. Le codage de ces divers types d'informatiofl est illustré sur la figure 7. '% t' type reference is of purely internal use bla machine. The coding of these various types of information is illustrated in Figure 7.

TYPES D'INFORMATION D'USAGE INTERNE
référence
niveau
{11bre,indécis}
{actif. coupé, mort}
Commentaire:
Le type d'information référence permet d'adresser la mémoire des cellules.
TYPES OF INFORMATION FOR INTERNAL USE
reference
level
{11bre, undecided}
{active. cut, dead}
Comment:
The type of reference information makes it possible to address the memory of the cells.

Le type niveau correspond b l'ensemble des niveaux flibre.lndécis sont des marques qui servent à indiquer le statut particulier des cellules au format variable décrit ci-après. (actif.coupé.mort} sont des marques qui servent à indiquer le statut particulier des cellules au format géniteur décrit ci-aprés.The level type corresponds to all the levels flibre.indecis are marks which serve to indicate the particular status of the cells in the variable format described below. (active.couped.mort} are marks used to indicate the special status of cells in parent format described below.

FORMATS DE CELLULE
constructeur est un format à plusieurs champs
gauche nom
droite :nom
variable est un format à plusieurs champs
statut : {11bre, indécis}
géniteur référence
liaison :noo
:{actif, coupé, mort} un format à un seul champ :donnée2
géniteur est un format à plusieurs variantes
discriminées par un champ nature valeur~d2 est
parmi
géniteur~actif si nature=actif
qui comporte les autres champs
niveau niveau
précédent référence
ni nom
n2 nom
n3 :nom
géniteurcoupé si nature=coupé
qui comporte les autres champs
niveau :niveau précédent : référence
géniteur~mort si nature=mort
Commentaire:
Une cellule peut être considérée selon quatre formats dIfférents, constructeur.
CELL FORMATS
constructor is a multi-field format
left name
right: name
variable is a multi-field format
status: {11th, undecided}
reference parent
liaison: noo
: {active, cut, dead} a single field format: data2
breeder is a multiple variant format
discriminated by a field nature value ~ d2 is
among
spawner ~ active if nature = active
which contains the other fields
level level
previous reference
neither name
n2 name
n3: name
cutter if nature = cut
which contains the other fields
level: previous level: reference
spawner ~ dead if nature = dead
Comment:
A cell can be considered according to four different formats, constructor.

variable, valeur~d2 et géniteur. La figure 8 illustre la répartition des champs de ces divers formats sur des mots de taille fixe. Les formats constructeur, variable et valeur~d2 servent à la représentation des termes. Ces trois formats sont de taIlle fixe et occupent un mot. Le format géniteur sert à la représentation de l'état de sauvegarde. Il regroupe trois formats de tailles différentes, géniteur~actif. géniteurcoupé ou géniteurmort discernés par le contenu d'un champ commun nature. Les formats 4niteur~coup et géniteur~mort occupent un seul mot. Le format géniteur~actif occupe quatre mots chai nés comme l'indique la figure 8: ces quatres mots sont considérés comme une seule cellule.variable, value ~ d2 and parent. Figure 8 illustrates the distribution of the fields of these various formats on fixed size words. The constructor, variable and value ~ d2 formats are used to represent the terms. These three formats are of a fixed nature and occupy a word. The parent format is used to represent the backup state. It gathers three formats of different sizes, spawner ~ active. cutter or spawner discerned by the content of a common field nature. The formats 4nister ~ coup and géniteur ~ mort occupy a single word. The spawner ~ active format occupies four stringed words as shown in Figure 8: these four words are considered as a single cell.

référencée par l'adresse du premier mot. L'éclatement de ce format sur quatre mots chaînés plutôt que sur des mots consécutifs à été choisi pour que le mécanisme d'allocation de mémoire gère des entités de taille fixe.referenced by the address of the first word. The break-up of this format onto four chained words rather than consecutive words has been chosen so that the memory allocation mechanism manages fixed-size entities.

MEMOIRE DES CELLULES
La machine comporte une collection de cellules, référencées par une information de type référence. Chaque cellule peut être considérée indifféremment sous un quelconque des divers formats pr6-cités. Les mécanismes qul sont décrits dans ce document exploitent des fonctions d'accès prédéfinies aux champs des cellules car ces champs ne sont pas accessible toujours isolément. Dans la description des mécanismes. les fonctions d'accès aux cellules sont notées d'une façon qui implique sous quel format la cellule référencée est considérée.
MEMORY OF CELLS
The machine comprises a collection of cells, referenced by reference type information. Each cell can be considered indifferently in any of the various above-mentioned formats. The mechanisms described in this document exploit predefined access functions to the cell fields because these fields are not always accessible in isolation. In the description of the mechanisms. the cell access functions are noted in a way that implies in which format the referenced cell is considered.

Ces fonctions d'accès sont les suivantes, r étant la référence de la cellule:
gauche(rl champ gauche
droitetr ] champ droite
état~Haison['] champs statut, géniteur
liaison ['] champs liaison
valeur~d2['] valeur~d2
état~géniteur['] champs nature, niveau
précedent [ r ] champ précédent
nom~1~2~3['] champs n1, n2, n3,
Chaque fonction d'accès peut être exploitée soit en lecture ce qui est noté:
fonction d'accès
soit en écriture, ce qui est noté:
fonction d'accès
Commentaire::
Les cellules sont Identique et accessibles sous n'importe quel format parce que le propre de la machine est précisément d'étre un système d'allocation de mémoire pour des besoins divers et changeants. Mais, pour être logiquement corrects, les mécanismes décrits doivent accéder eux cellules sous un format correct.
These access functions are as follows, where r is the reference of the cell:
left (rl left field
right] right field
state ~ Haison ['] status fields, spawner
binding ['] binding fields
value ~ d2 ['] value ~ d2
state ~ spawner ['] fields nature, level
previous [r] previous field
name ~ 1 ~ 2 ~ 3 ['] fields n1, n2, n3,
Each access function can be exploited either in reading which is noted:
access function
in writing, which is noted:
access function
Comment::
The cells are identical and accessible in any format because the specificity of the machine is precisely to be a memory allocation system for various and changing needs. But, to be logically correct, the described mechanisms must access their cells in a correct format.

Pour ne pas entrer dans les détails inintéressants de la gestion des accès aux variantes du format géniteur, ces détails sont supposés réalisés par les primitives d'accès éttgéniteur, précédent e-s nom~1~2~3 : ces accès testent le champ nature pour décider des mesures a prendre pour adresser la mémoire. To avoid going into the uninteresting details of the access management of variants of the parent format, these details are supposed to be realized by the access primitives ettgéniteur, precedent es nom ~ 1 ~ 2 ~ 3: these accesses test the field nature to decide measures to address the memory.

En particulier dans les accés état~génlteur la composante niveau est non signifiante si nature=mort L'écriture avec nature=coupé, si l'état antérieur est nature=actif, provoque automatiquement la recopie du champ précédent dans le premier mot. de sorte à assurer la cohérence désirée,
REGISTRE GENITEUR COURANT géniteurcourant référence
Commentaire:
Le registre géniteur~c.ourant contient la référence d'une cellule considérée sous le format géniteur. Il repère la tète de la liste des géniteurs qui représente l'état de sauvegarde courant.
In particular in the accesses state ~ generator the level component is not significant if nature = death The writing with nature = cut, if the previous state is nature = active, automatically causes the copying of the preceding field in the first word. so as to ensure the desired coherence,
CURRENT GENITAL REGISTER genitorcurrent reference
Comment:
The parent register ~ c. Current contains the reference of a cell considered in the parent format. It locates the head of the spawning list that represents the current save status.

METHODES DE REPRESENTATION
NOTIONS DE BASE
références
# références est fini
# données i = références
H noms = marques~de~naturexréférences
DéfInition: indicateur. information
indicateur E noms - marques de~nature information E noms - références
et # m e marques~de~nature # r e références
indicateur ( < m.r > )=m et information( < m.r > )=r
états~de~cellule. gauche. droite. statut géniteur. liaison, valeur~d2. nature.
REPRESENTATION METHODS
BASIC NOTIONS
references
# references is finished
# data i = references
H names = marks ~ of ~ naturexreferences
DefInition: indicator. information
indicator E names - marks of ~ nature information E names - references
and # me marks ~ of ~ nature # re references
indicator (<mr>) = m and information (<mr>) = r
Statements ~ of ~ cell. left. right. breeder status. binding, value ~ d2. nature.

niveau, précédent, nî, n2, n3
# états~de~cellule est fin@
# gauche, droite E états~de~cellule - noms
##g.d e noms # c e élat~de~cellule (guche(c)=g et droite (c)=d)
# statut e états~de~cellule # {libre indécis}
#géniteur e états~de~cellule # rétérences
#llaison e états~de~cellule # noms
# # s e { libre. indécis} # g e références # l e états~de~ceilule
statut(c)=s et géniteur(c)=g et liaison(c)=1
# valeur~d2 e états~de~cellule # données2
# # d e données2 # c e états~de~cellule valeur~d2(c)=d
H nature E états~de~cellule - {actif, coupé. mort}
# niveau E etats~de~cellule - niveaux
# précédent e états~de~cellule # références
H nl,n2,n3 E otats~de~cellule - noms
# # i e niveaux # p E références # n1.n2.n3 e noms # c e états~de~cellule
nature(c)=actif et niveau(c)=i et précedent(c)=p
et nl(c)=nl et n2(c)=n2 et n3(c)=n3
# # i e niveaux # p e réferences # c e états~de~cellule
nature(c)=coupé et niveau(c)=i et précédent(c)=p
F i c E états~de~cellule nature(c)=mort
Définition: configurations
configurations = références - états~de~ceilule
Commentaire:
données est assimilé à références.
level, previous, nî, n2, n3
# states ~ of ~ cell is late @
# left, right E states ~ from ~ cell - names
## gd e names # this elat ~ of ~ cell (guche (c) = g and right (c) = d)
# status e states ~ of ~ cell # {free undecided}
# spawner e states ~ of ~ cell # reverences
#llaison e states ~ of ~ cell # names
# # get free. undecided} # references # the states ~ of ~ ceilule
status (c) = s and parent (c) = g and binding (c) = 1
# value ~ d2 e states ~ of ~ cell # data2
# # of data2 # this states ~ of ~ cell value ~ d2 (c) = d
H nature E states ~ of ~ cell - {active, cut. death}
# level E states ~ of ~ cell - levels
# previous e states ~ of ~ cell # references
H nl, n2, n3 E otats ~ of ~ cell - names
# # ie levels # p E references # n1.n2.n3 e names # this states ~ of ~ cell
nature (c) = active and level (c) = i and previous (c) = p
and nl (c) = nl and n2 (c) = n2 and n3 (c) = n3
# # ie levels # pe references # this states ~ of ~ cell
nature (c) = cut and level (c) = i and previous (c) = p
F ic E states ~ of ~ cell nature (c) = death
Definition: configurations
configurations = references - states ~ of ~ ceilule
Comment:
data is assimilated to references.

indicateur et information sont les fonctions de sélection de champ de la
structure nom.
indicator and information are the field selection functions of the
structure name.

Les états~de~cellule sont les informations brutes que la mémoire est capable
de conserver dans une cellule. Les diverses fonctions posées traduisent la
capacité des cellules et les sélections de champs des divers formats sous
lesquels une cellule peut être considérée.
The states of ~ cell are the raw information that the memory is capable of
to keep in a cell. The various functions asked translate the
cell capacity and field selections of the various formats under
which a cell can be considered.

Les configuratlons sont les états possible de la mémoire des cellules. Configurations are possible states of cell memory.

REPRESENTATION D'UNE DESIGNATION DE TERMES
Définition: d variable liée
n est d~variable~liée dans M si
n E noms M E configurations
et indicateur(n)=vl ou Indicateur(n)=v2
et statut (M (information(n)))=indécis
et nature (géniteur(M (information mort
Définition: d terminal
n est d terminal dans M si
n e noms M e configurations
et non C n est d~variable~liée dans M )
Définition: d ultime
nu est d~ultime de n dans M si
n,nu E noms M E configurations
et # Sn E sentiers ^ noms) 3 i E entiers
Sn(O)=n
et # @ e entiers
j < i #
Sn(j) est d~variable~liée dans M
et Sn(j+1) = liaison (M (Information (Sn(j))))
et Sn(l) est d~terminal dans M
et
indicateur(Sn(i))/niv et nu=Sn(i)
ou
Indicateur (Sn(i)]=niv et indicateur (nu)=niv
et Information(nu) est ultime de information(Sn(l)) dans M
Définition:: dregrésentatIon
M est dreprésentation de D si
M e configurations D e désignations
et 9 n e noms D(n) # #
#
# nu e noms
nu est d~ultime de n dans M
et indicateur(nu)=c1 #
# ng.nd e noms
ng est ultime de gauche(M(information(nu))) dans M
et nd est d~ultime de drolte(M (Information (nu))) dans M
et D(n) = consl(D(ng),D(nd))
et indicateur(nu)=c2
i ng.nd E noms
ng est d~ultime de gauche(M(information(nu))) dans M
et nd est d~ultime de drolte(M(information(nu))) dans M
et D(n) = cons2(D(ng),D(nd))
et indicateur (nu)=v1 #
D(n) e var1
etvnn.nnu e noms
D(nn)=D(n) et nnu est d~ultime de nn dans M #
nnu=nu
et indicateur(nu)=v2 #
D(n) e var2
etVnn,nnu é noms
D(nn)=D(n) et nnu est d~ultime de nn dans M #
nnu=nu
et indicateur(nu)=d1 # D(n)=information(nu)
et indicateur(nu)=d2 # D(n)=valeur~d2(M(information(nu)))
et lndlcateur(nu)=niv = > D (n)=niveau(M (information(n u)))
Commentaire:
Une cellule de référence r considérée sous le format constructeur représente un terme construit. Les champs gauche et droite de la cellule contiennent les noms de deux termes tg et td. Un nom de la forme cl:r ou c2:r est un nom direct de consl(tg.td) ou cons2(tg.td).
REPRESENTATION OF A DESIGNATION OF TERMS
Definition: d related variable
n is d ~ variable ~ linked in M if
n E names ME configurations
and indicator (n) = vl or Indicator (n) = v2
and status (M (information (n))) = undecided
and nature (parent (M (dead information
Definition: d terminal
n is d terminal in M if
names me configurations
and no C n is d ~ variable ~ linked in M)
Definition: ultimate d
nu is ultimate d of n in M if
n, nu E names ME configurations
and # Sn E paths ^ names) 3 i E integers
Sn (O) = n
and # @ e integers
j <i #
Sn (j) is variable ~ linked in M
and Sn (j + 1) = bond (M (Information (Sn (j))))
and Sn (l) is d ~ terminal in M
and
indicator (Sn (i)) / level and nu = Sn (i)
or
Indicator (Sn (i)] = level and indicator (nu) = level
and Information (nu) is ultimate information (Sn (l)) in M
Definition :: dregresentatIon
M is drepresentation of D if
M e configurations D e designations
and 9 names D (n) # #
#
# nu e names
naked is ultimate d of n in M
and indicator (nu) = c1 #
# ng.nd e names
ng is ultimate left (M (information (nu))) in M
and nd is ultimate of drolte (M (Information (nu))) in M
and D (n) = consl (D (ng), D (nd))
and indicator (nu) = c2
i ng.nd E names
ng is last from left (M (information (nu))) in M
and nd is ultimate of drolte (M (information (nu))) in M
and D (n) = cons2 (D (ng), D (nd))
and indicator (nu) = v1 #
D (n) e var1
etvnn.nnu e names
D (nn) = D (n) and nnu is the ultimate of nn in M #
NNU = naked
and indicator (nu) = v2 #
D (n) e var2
andVnn, nnu é names
D (nn) = D (n) and nnu is the ultimate of nn in M #
NNU = naked
and indicator (nu) = d1 # D (n) = information (nu)
and indicator (nu) = d2 # D (n) = value ~ d2 (M (information (nu)))
and lndlcateur (nu) = niv => D (n) = level (M (information (nu)))
Comment:
A reference cell r considered in the constructor format represents a constructed term. The left and right fields of the cell contain the names of two terms tg and td. A name of the form cl: r or c2: r is a direct name of consl (tg.td) or cons2 (tg.td).

Une cellule considérée sous le format variable admet deux interprétations différentes selon l'état des champs statut et géniteur. Une telle cellule est appelée variable libre si son champ statut contient libre ou si son champ géniteur contient la référence d'un géniteur mort Sinon. c'est à dire si son champ statut contient Indécis et si son champ géniteur contient la référence d'un géniteur actif ou coupé. elle est appelée variable liée.  A cell considered in the variable format has two different interpretations depending on the status of the status and parent fields. Such a cell is called a free variable if its status field contains free or if its parent field contains the reference of a dead parent. that is, if its status field contains Undecided and if its parent field contains the reference of an active or severed parent. it is called linked variable.

Une variable libre de référence, représente un élément v des variables. Un nom de la forme vlz ou v2:r est un nom direct de v. De plus cette cellule est l'unique représentante de v: elle est citée depuis toutes les représentations des occurences de v dans les termes, de sorte que son remplacement par un terme à l'occasion d'une commande substituer est simplement réalisé par une modification de cette cellule. A reference free variable, represents an element v of the variables. A name of the form vlz or v2: r is a direct name of v. Moreover this cell is the unique representative of v: it is quoted from all the representations of the occurrences of v in the terms, so that its replacement by a term on the occasion of a substitute command is simply realized by a modification of this cell.

Une variable liée est un renvoi au terme cité dans son champ liaison. Le remplacement de v par t à l'occasion d'une commande substituer est réalisé en rangeant un nom de t dans le champ liaison de la variable libre qui représente v et en la changeant en variable liée. Le rôle des géniteurs dans la définition du statut libre/liée des variables sera explicité à propos de la représentation de la sauvegarde. Une variable libre est initialement créée avec son champ statut valant libre; lors d'un remplacement, la marque indécis est rangée dans son champ statut et la référence du géniteur courant du moment, contenue dans le registre géniteur~courant, est rangée dans son champ géniteur. A linked variable is a reference to the term cited in its link field. The replacement of v by t on the occasion of a substitute command is carried out by putting a name of t in the link field of the free variable which represents v and changing it into a linked variable. The role of the parents in defining the free / linked status of the variables will be explained about the representation of the backup. A free variable is initially created with its status field free; during a replacement, the undecided mark is placed in its status field and the reference of the current parent of the moment, contained in the genealogical register ~ current, is stored in its parent field.

Le géniteur courant est toujours actif ou coupé, de sorte que la variable est alors considérée comme liée; elle demeure liée jusqu'à 'exécution d'une commande reprendre qui. pour restaurer l'état de d isignation des termes du moment de la sauvegarde, peut nécessiter de rétablir un statut libre pour cette variable. Pour cela. lors de l'exécution d'une commande reprendre, le géniteur courant du moment est transformé en géniteur mort, de sorte que toutes les variables qui ont été liées depuis la dernière sauvegarde redeviennent libres.The current parent is always active or cut off, so the variable is then considered bound; it remains bound up to the execution of a resume command. to restore the state of the definition of the terms of the moment of the backup, may require to restore a free status for this variable. For that. when executing a resume command, the current parent is transformed into a dead parent, so that all variables that have been linked since the last backup become free again.

Dans ce cas le statut libre d'une variable est code indirectement par le fait que son champ géniteur contient la référence d'un géniteur mort. Les géniteurs jouent donc un rôle similaire à la gtrainbsa utilIsée dans la plupart des interpréteurs PROLOG.In this case the free status of a variable is indirectly coded by the fact that its parent field contains the reference of a dead parent. Broodstock therefore play a role similar to the gtrainbsa used in most PROLOG interpreters.


Une cellule de référence, r considérée sous le format aieurd2 contient un élément d des données2. Un nom de la forme J'2:r est un nom direct de d.

A reference cell, r considered in the format aieurd2 contains an element d of data2. A name of the form J'2: r is a direct name of d.

Une cellule de référence r considérée sous le format géniteur~actif contient dans son champ niveau un élément i des niveaux Un nom de la forme niv.r est un nom direct de s.  A reference cell r considered in the spawner ~ active format contains in its level field a level element i A name of the form niv.r is a direct name of s.

La représentation d'un élément d des données1, ne nécessite aucune cellule. The representation of an element of data1, does not require any cell.

Un nom de la forme d1:d est un nom direct de d.A name of the form d1: d is a direct name of d.

On remarquere que, à l'exception des noms directs des données1, tous les noms sont de la forme m:r, où r est la référence d'une cellule et m est une marque qui indique le type de cette cellule. c'est 3 dire sous quel format elle doit être considérée. La méthode choisie consiste donc à noter le type d'une cellule à chaque occurence de sa référence, plutot que de la noter sur la cellule eile-meme. Bien que cette méthode soit légèrement plus coûteuse en taille de mémoire. elle a pour avantages que les données i n'occupent aucune cellule et que le test de la nature du terme désigné par un nom est plus rapide. Ce dernier critère est prépondérant dans les applications visées. Note that, except for the direct names of the data1, all names are of the form m: r, where r is the reference of a cell and m is a mark that indicates the type of that cell. that is, in what format it should be considered. The chosen method is therefore to note the type of a cell at each occurrence of its reference, rather than note it on the cell itself. Although this method is slightly more expensive in memory size. it has the advantages that the data i do not occupy any cell and that the test of the nature of the term designated by a name is faster. This last criterion is predominant in the targeted applications.

En plus des noms directs précédemment énumérés, un nom peut a un moment donné désigner indirectement un terme. In addition to the direct names previously enumerated, a name may at a given moment indirectly designate a term.

Un premier cas concerne les noms de la forme v1:r ou v2:r où r est la référence d'une variable liée. Un tel nom. qualifié de ci~variable~liée dans la configuration de mémoire considérée. peut être le départ d'une chaine de noms de longueur finie. le champ liaison de la varlable liée citée par un nom étant le nom suivant de la chaine. Le dernier nom de la chaine ne cite pas une variable liée et tous les noms de la chaine désignent le même terme que lui.  A first case concerns the names of the form v1: r or v2: r where r is the reference of a linked variable. Such a name. qualified ci ~ variable ~ linked in the memory configuration considered. can be the start of a string of finite length names. the link field of the linked variable named by a name being the next name of the string. The last name of the string does not quote a linked variable and all the names of the string designate the same term as it.

Un autre cas de noms indirects concerne les noms de la forme niv:r où r est la référence d'un géniteur coupé. Un tel nom cite une strate autrefois sauvegardée qui a été détruite par une commande couper. La chai ne de références issue du champ précédent de ce géniteur coupé se termine par la référence d'un géniteur sotif qui représente l'élément des niveaux actuellement désigné par ce nom. Another case of indirect names concerns the names of the form niv: r where r is the reference of a cut off parent. Such a name cites a previously saved stratum that has been destroyed by a cut command. The cell of references from the previous field of this cut off parent ends with the reference of a sotif parent who represents the level element currently designated by this name.

Ce mécanisme de désignation indirecte est décrit par la relation d~ultime qui associe à un nom un nom direct désignant le même terme. This indirect designation mechanism is described by the ultimate relationship that associates a name with a direct noun designating the same term.

Tous les noms qui participent internement à la représentations des termes ne sont pas nécessairement du domaine connu de l'utilisateur. Le domaine de définition de la désignation D comporte essentiellement des noms directs. plus éventuellement une collection de noms indirects qui dépend de l'historique des commandes. Après une commande réduire. ou une commande reprendre, la désignation D offerte à l'utilisateur ne comporte que des noms directs. Ce sont les trois noms rendus en résultat par la commande, ainsi que les noms directs des représentations des sous-termes accessibles par ces trois noms. Cette restriction de la désignation, invisible à s'utilisateur, se manifeste lors de l'exécution des commandes d'accès aux termes accéderauche et accéder~droite, qui ne rendent en résultat que des noms directs.Par contre, entre deux exécutions de réduire. c'est à dire pendant que l'utilisateur est en phase d'élaboration de résultats intermédiaires. la désignation D peut comporter temporairement des noms indirects: ce sont les noms qui citent des variables récemment créées puis liées par une commande substituer, ou des strates récemment sauvegardées puis détruites par une commande couper. Pendant ces phases l'utilisateur peut en effet conserver de tels noms pour accéder aux termes. All names that participate internally in the representations of terms are not necessarily known to the user. The domain of definition of the designation D essentially comprises direct names. more possibly a collection of indirect names which depends on the history of the orders. After a command reduce. or a resume command, the designation D offered to the user includes only direct names. These are the three names rendered in the result by the command, as well as the direct names of the representations of the sub-terms accessible by these three names. This restriction of the designation, invisible to user, is manifested during the execution of the commands of access to the terms will access and access right, which result in only the names direct.Par cons, between two executions to reduce . that is, while the user is in the process of developing intermediate results. the designation D may temporarily include indirect names: these are names that cite variables recently created and then linked by a substitute command, or strata recently saved and destroyed by a cut command. During these phases the user can indeed keep such names to access the terms.

Cette réduction de la désignation est en accord avec la spécification de la machine qui laisse en fait un choix encore plus vaste à la réalisation. Elle est importante pour le mécanisme de récupération de mémoire: l'invisibilité des géniteurs coupés permet leur récupération après avoir remplacé les occurences de leurs références par les références des géniteurs actifs équivalents; l'invisibilité des variablesw es permettrait de remplacer certaines occurences de leurs références. mais pas toutes à cause du partage avec la sauvegarde décrit au paragraphe suivant. par les noms directs équivalents. Ceci accélérerait les accès aux termes en supprimant la traversée de ces variables liées qui ont servi d'intermédiaires de construction et qui ne servent plus désormais. Ceci permettrait également de récupérer certaines de ces variables. Ce mécanisme n'est cependant pas réalisé dans la version de la machine présentée dans ce document
La relation dreprésentation relie la composante D de l'état abstrait et l'état concret de la mémoire. Cette relation est encore indéterministe: pour un élément
M des configurations. de nombreux éléments D des désignations la satisfont.
This reduction in designation is in line with the specification of the machine, which in fact leaves an even greater choice for realization. It is important for the mechanism of recovery of memory: the invisibility of cut broods allows their recovery after having replaced the occurrences of their references by the references of the equivalent active broods; the invisibility of the variables would make it possible to replace certain occurrences of their references. but not all because of sharing with the backup described in the next paragraph. by the equivalent direct names. This would speed up access to the terms by removing the crossing of these linked variables that served as building middlemen and are no longer used. This would also recover some of these variables. This mechanism is however not realized in the version of the machine presented in this document
The representation relation connects the component D of the abstract state and the concrete state of the memory. This relationship is still indeterministic: for an element
M configurations. many elements D of the designations satisfy it.

Le complément de détermination dépend en effet de l'historique des commandes et ne peut être pris en charge par une relation faisant intervenir seulement l'état de la mémoire des cellules. The complement of determination depends indeed on the history of the commands and can not be supported by a relation involving only the state of the memory of the cells.

La figure 9 est un exemple de d~représentation. On remarquera que plusieurs noms différents. bien que directs. peuvent désigner le même terme, par exemple
D(c1:C1)=D)c1:C3) La représentation permet le partage classique des représentations de sous-termes,. par exemple la cellule C7 qui participe à la représentation des termes D(ci:C7), D(cl:C6), D(cl:C3) et D(cl:Cl). La cellule
C9 est une variable liée. les cellules C5 et C8 sont des variables libres qui représentent deux éléments x et y des variablesl.
Figure 9 is an example of representation. We will notice that several different names. although direct. can refer to the same term, for example
D (c1: C1) = D) c1: C3) The representation allows the classical sharing of representations of sub-terms ,. for example the C7 cell which participates in the representation of the terms D (ci: C7), D (cl: C6), D (cl: C3) and D (cl: Cl). The cell
C9 is a linked variable. cells C5 and C8 are free variables that represent two elements x and y of variables l.

REPRESENTATION D'UNE SAUVEGARDE
Définition: 1 variable liée
n est t~variable~liée pour k dans M si
n e noms k E niveaux M E configurations
et indicateur(n)=v1 ou indicateur(n)=v2
et statut(M (Information(n)))=indUcis
et nature(M(génieur(M(information(n)))) t mort
et niveau(M(géniteur(M(intormation(n)))) < k
Définition: t terminal
n est ~terminal pour k dans M si
n e noms k E niveaux M E conflguraticns
et non( n est t~variable~ liée pour k dans M )
Définition:: t ultIme
nu est t~ultime de n pour k dans M si
nnu é noms k É niveaux M e configurations
et # Sn e (entiers # noms) # i e entiers
Sn(O)=n
et # j e entiers
j < i #
Sn(j) est t~variable~liée pour k dans M
et Sn(1+1)=llaison(M(information(Sn(J))))
et Sn(i) est t~terminal pour k dans M
et
indicateur(Sn(i))#niv et nu=sn(i)
ou
indicateur(Sn(i))=niv et indicateur(nu)=niv
et indormation(nu) est s~ultime de Jnformation(Sn(i)) dans M
Définition:: t représentation
M,k est t~représentation de D si
M s configurations k e niveaux D e désignations
et V n e noms
D(n)##
#
# nu # noms
nu est ultime de n pour k dans M
et indicateur(nu)=c1 #
# ng.nd # noms
ng est t~ultime de gauche(M(information(nu))) pour k dans M
et nd est t~ultime de droite(M(information(nu))) pour k dans M
et D(n)=consl(D(ng).D(nd))
et indicateur(nu)=c2 #
# ng.nd e noms
ng est t~ultime de gauche(M(information(nu))) pour k dans M
et nd est t~ultime de droite(M(informatîon(nu))) pour k dans M
et D(n)=cons2(D(ng).D(nd))
et indicateur(nu)=v1 #
D(n) e var1
etVnn.nnu E noms
D(nn)=D(n) et nnu est l~ultime de nn pour k dans M
nnu=nu
et indicateur(nu)=v2 #
D(n) e var2
et V nn,nnu e noms
D(nn)=D(n) et nnu est t~ultime de nn pour k dans M #
nnu=nu
et indicateur(nu)=d1 = > D(n)=information(nu)
et lndlcateur(nu)=d2 = > D(n)=valeur~ds(M(information(nu)))
et indlcateur(nu)=niv = > D (n)=niveau(M (information(n u)))
Définition:: ultime
gu est s~ultime de g dans M si
g,gu E références M e configurations
et + Sr e (entiers - références) + i e entiers
Sr(O)=n
et V j E entiers
j < i #
nature(M(Sr(j)))=coupé et niveau(M(Sr(J)))=niveau(M(gu))
et Sr(J+1)=précédent(M(Sr(j)))
et gu=Sr(i) et nature(M(gu))=actif
Définition : s~correspondances
s~correspondances = références # (sauvegardesU(1))
Définition : s~représentation
M est s~représentation de SC si
M e configurations SC E 5~correspondances
et V g e références
SC(g) # 1 #
# gu e références
gu est ultime de g dans M
et
niveau (M (gu))=O #
SC(g) = sauvegards~vide
et
niveau(M(gu))#O
#
# ggu e références # D e désignations
gu est s~uitime de précédeni(Migy)) dans M
et niveau(M(ggu)) =
et M.niveau (M(ggu)) est t~représeniation de D
et SC(g) = sauvei < D(n1 (M(ggu))). D(n2(M(ggu))). D(n3(Miggu))) > . SC(ggu)) Commentaire;
La sauvegarde S esi une liste de triplets de termes.Une telle liste es1
représentée par des cellules au format géniteur~actif ou géniteur~coupé
chainées par leurs champs précedent le premier géniteur de la chaine. appelé
géniteur courant, est à tout moment repéré par le registre géniteur~courant.
REPRESENTATION OF A SAFEGUARD
Definition: 1 related variable
n is t ~ variable ~ linked for k in M if
do names k E levels ME configurations
and indicator (n) = v1 or indicator (n) = v2
and status (M (Information (n))) = indUcis
and nature (M (engineer (M (information (n)))) t death
and level (M (parent (M (intormation (n)))) <k
Definition: t terminal
n is ~ terminal for k in M if
no names k E levels ME conflguraticns
and no (n is t ~ variable ~ linked for k in M)
Definition :: t ultIme
n is t ~ ultimate of n for k in M if
number of names k e levels M e configurations
and # Sn e (integers # names) # ie integers
Sn (O) = n
and # I integers
j <i #
Sn (j) is t ~ variable linked for k in M
and Sn (1 + 1) = laison (M (information (Sn (J))))
and Sn (i) is t ~ terminal for k in M
and
indicator (Sn (i)) # level and nu = sn (i)
or
indicator (Sn (i)) = level and indicator (nu) = level
and indormation (nu) is s ~ ultimate of information (Sn (i)) in M
Definition :: t representation
M, k is t ~ representation of D if
M s configurations ke levels D e designations
and V no names
D (n) ##
#
# naked # names
nude is ultimate of n for k in M
and indicator (nu) = c1 #
# ng.nd # names
ng is t ~ ultimate left (M (information (nu))) for k in M
and nd is t ~ ultimate of right (M (information (nu))) for k in M
and D (n) = consl (D (ng) .D (nd))
and indicator (nu) = c2 #
# ng.nd e names
ng is t ~ ultimate left (M (information (nu))) for k in M
and nd is t ~ ultimate of right (M (informatîon (nu))) for k in M
and D (n) = cons2 (D (ng) .D (nd))
and indicator (nu) = v1 #
D (n) e var1
andVnn.nnu E names
D (nn) = D (n) and nnu is the ultimate of nn for k in M
NNU = naked
and indicator (nu) = v2 #
D (n) e var2
and V nn, nnu e names
D (nn) = D (n) and nnu is t ~ ultimate of nn for k in M #
NNU = naked
and indicator (nu) = d1 => D (n) = information (nu)
and lndlcateur (nu) = d2 => D (n) = value ~ ds (M (information (nu)))
and indlcator (nu) = niv => D (n) = level (M (information (nu)))
Definition :: ultimate
gu is ultimate s of g in M if
g, gu E references M e configurations
and + Sr e (integers - references) + ie integers
Sr (O) = n
and V j E integers
j <i #
nature (M (Sr (j))) = cut and level (M (Sr (J))) = level (M (gu))
and Sr (J + 1) = previous (M (Sr (j)))
and gu = Sr (i) and nature (M (gu)) = active
Definition: s ~ correspondences
s ~ correspondences = references # (backupsU (1))
Definition: s ~ representation
M is s ~ representation of SC if
M e configurations SC E 5 ~ correspondences
and age references
SC (g) # 1 #
# gu e references
gu is ultimate of g in M
and
level (M (gu)) = O #
SC (g) = saves ~ empty
and
level (M (gu)) # O
#
# ggu e references # D e designations
gu is safe from precedeni (Migy)) in M
and level (M (ggu)) =
and M.niveau (M (ggu)) is t ~ representative of D
and SC (g) = saves <D (n1 (M (ggu))). D (n2 (M (GGU))). D (n3 (Miggu)))>. SC (ggu)) Comment;
The backup is a list of triplets of terms. Such a list es1
represented by cells in spawner format ~ active or spawner ~ cut
chained by their fields preceding the first spawner of the chain. called
spawner current, is at all times spotted by the register spawner ~ current.

Une cellule au format géniteur~coupé contient dans son champ précédent un
revoi à un autre géniteur. Elle est le vestige d'une strate sauvegardés puis
détruite par une commande couper. La chaine de références issue de son champ
précédent est composée d'un nombre fini de références de géniteurs coupés
et se termine par la référence d'un géniteur actif qui lui est équivalent Ce
mécanisme de renvoi est décrit par ta relation s~ultime qui associe à une
référence de géniteur la référence du géniteur actif équivalent
Une cellule au format géniteur~actif dont le champ niveau contient o représente
la sauvegarde~vide, Par comportement de la machine, cette cellule est unique
dans la mémoire: elle ast créée m l'initiatisation.
A cell in the spawner ~ format contains in its previous field a
see another parent. It is the vestige of a saved layer and then
destroyed by a cut command. The chain of references resulting from its field
previous is made up of a finite number of cutters
and ends with the reference of an active parent who is equivalent to it
referral mechanism is described by your ultimate relationship which associates with a
parent reference the reference of the active parent
A cell in spawner ~ active format whose level field contains o represents
backup ~ empty, By machine behavior, this cell is unique
in memory: it is created by initiatization.

Une cellule au format géniteur~actif dent le champ niveau contient / différent de o représente une sauvegarde de teille L Son champ précédent contient la référence d'un géniteur dont l'équivalent actif représente la sous-sauvegarde de taille i-I et contient dans ses champs sll, n2 et n3 des noms qui désignent les trois termes de tête de la sauvegarde de taille j. A cell in the spawner format ~ active at the level field contains / different from o represents a backup of the L scop Its previous field contains the reference of a sparer whose active equivalent represents the sub-save of size iI and contains in its fields sll, n2 and n3 names that designate the three top terms of the backup of size j.

Ces mécanismes sonts décrits pa, la relation s~représentation.  These mechanisms are described by the relation s ~ representation.

Les termes sauvegardés ne sont pas représentés par recopie. c'est à dire par des ressources de mémoire propres. mais par partage de ressources entre eux et avec les termes de la désignation D. En effet. la plupart des termes représentés au niveau k sont des instances de termes représentés au niveau k-l, c'est à dire n'en diffère' que par des remplacements de variables. Lors d'une commande sauvegarder les termes paramètres de la commande sont dejà représentés et l'exécution de la commande consiste à ranger dans les champs ni. n2 et n3 du géniteur courant des noms directs qui désignent ces termes. The saved terms are not represented by copying. that is, by own memory resources. but by sharing resources between them and with the terms of the designation D. Indeed. most of the terms represented at the level k are instances of terms represented at level k-1, that is to say only differs by substitutions of variables. When ordering save the terms parameters of the order are already represented and the execution of the command consists of storing in the fields nor. n2 and n3 of the current parent of the direct names that designate these terms.

Cependant la désignation D continue par la suite d'évoluer. notamment par les commandes substituer qui ont un effet de bord sur les termes accessibles par la désignation D. effet qui ne doit pas perturber les termes sauvegardés. Pour cela les variables liées contlennent dans leur champ géniteur la référence d'un géniteur qui indique à partir de quel niveau de sauvegarde cette variable doit être considérée comme liée. En dessous de ce- niveau, cette variable. si elle est rencontrée dans la représentation d'un terme sauvegardé. doit être considérée comme libre.However the designation D continues to evolve thereafter. in particular by substituting commands which have an edge effect on the terms accessible by the designation D. effect which must not disturb the saved terms. For this purpose, the linked variables contain in their parent field the reference of a parent that indicates from which level of backup this variable should be considered as linked. Below this level, this variable. if it is encountered in the representation of a saved term. must be considered free.

A chaque niveau X est associé une désignation DA qui fait correspondre aux trois noms ni, n2 et n3 les trois termes sauvegardés à ce niveau. La relation trepr8sentation décrit comment sont reliés l'état de la mémoire des cellules, un niveau k et une désignation DA propre a ce niveau. Cette relation est analogue à dreprésentation. la différence étant localisée dans la relation Lvariable~liée qui prend en compte le niveau pour décider du statut libre/liée des variables. At each level X is associated a designation DA which matches the three names ni, n2 and n3 the three terms saved at this level. The presentation relation describes how the memory state of the cells is related, a level k and a proper DA designation at this level. This relationship is analogous to drepresentation. the difference being localized in the relation Lvariable ~ linked which takes into account the level to decide the free / bound status of the variables.

Le champ niveau des géniteurs n'est pas utilisé lors de l'exécution des commandes de manipulation de la désignation D. Lors d'une commande reprendre. tous les géniteurs équivalents au géniteur courant du moment sont transformés en géniteurs morts. Ceci supprime toutes les occurences d'un niveau et rend ce niveau réutiîisable pour une sauvegarde ultérieure. Pour l'exécution des commandes, seul le champ nature des géniteurs intervient pour déterminer le statut libre/liée d'une variable. Le champ niveau est utilisé par le mécanisme de récupératIon de mémoire pour connaitre les accès exacts lors du marquage des cellules utiles. The spawning level field is not used when performing commands for handling the designation D. When a command resumes. all the spawners equivalent to the current spawner are transformed into dead spawners. This removes all occurrences of a level and makes this level reusable for later backup. For the execution of the orders, only the nature field of the parents intervenes to determine the free / bound status of a variable. The level field is used by the memory retrieval mechanism to know the exact accesses when marking the useful cells.

La figure 10 est un exemple de sreprésentaflon. La sauvegarde représentée par le géniteur C16 est de taille 4. A chaque niveau 0. 1. 2, et 3 correspond une désignation DO, Dl, D2 et D3. Ces désignations font correspondre des termes aux noms inscrits dans les champs ni. n2 et n3 des géniteurs actifs du niveau correspondant. C15 et C14 sont des géniteurs coupés équivalents au géniteur actif C12. On remarquera le partage dans les représentations des termes sauvegardés à divers niveaux: par exemple les représentations de Di(cl:Ci) et D2(c1:Ci) ont en commun les cellules Cl. C2. C5. C6 et C7. Les variables C2.C6 et C7 sont considérées comme liées dans le niveau 2 alors qu'elles sont considérées comme libres dans le niveau 1. Figure 10 is an example of srepresentaflon. The backup represented by the parent C16 is of size 4. At each level 0. 1. 2, and 3 corresponds a designation DO, D1, D2 and D3. These designations match terms with the names entered in the fields ni. n2 and n3 active spawners of the corresponding level. C15 and C14 are cut off parents equivalent to the active parent C12. One will notice the sharing in the representations of the terms saved at various levels: for example the representations of Di (cl: Ci) and D2 (c1: Ci) have in common the cells Cl. C2. C5. C6 and C7. The variables C2.C6 and C7 are considered as linked in level 2 whereas they are considered as free in level 1.

REPRESENTATION DE L'ETAT ABSTRAIT
Définition: règles
rôles = références - [ ci,c2,vi.v2.d2.niv,disp}
Définition : nom~cohérent
n est nom~cohérent avec R si
n e noms. R e rôles
et C indicateur (n)=d1 ou indicateur(n)=R(information(n)) )
Définition : configuration~cohérente
M est confIguratIon~cohérente avec R si
M e configurations, R e roles
et
V r e références
R(r)=cl ou R(r)=c2
gauche(M(r)) est nom~cohérent avec R
et droite(M(r)) est nom~cohérent avec R
et C R(r)=vl ou R(r)=v2 ) et statut(M(r))=indécis
R(génîteur(M(r))) = niv
et
nature(M(géniteur(M(r)))) t mort
iiaison(M(r)) est nom~cohérent avec R
et R(r)=niv et nature(M(r))=coupé R(précêdent(M(r)))=niv
et R(r)=niv et nature(M(r))=actif et niveaU(M(r))rO
R(précédent(M(r))) = niv
et i ru e références
ru est s~ultime de précédent (M(r)) dans M
et n1 (M(ru)) est nom~cohérent avec R
et n2(M(ru)) est nom~cohérent avec R
et n3(M(ru)) est nom~cohérent avec R
Définition: représentation
M,R,g est représentation de D,S Si
M e configurations R e roles g e références De e désignations S e sauvegardes
et M est configuration~cohérente avec R
et # n e noms C D(n)## = > n est nom~cohérent avec R )
et M est d~représentation de D
et R(g)=niv et nature < M(g))tmort
et V r s références
R(r)=niv et nature(M(r))#mort
# S s sentiers - références) i i e entiers
S(O)=g
etvj e entiers C j < i = > S(j+1)=précédent(M(S(j))) )
et S(i)=r
et i SC s scorrespondances
M est sreprésentation de SC et SC(g)=S
et M,niveau(M(g)) est t-représentation de D
Commentaire:
Un élément des rôles est un statut d'allocation de la mémoire des cellules.
REPRESENTATION OF THE ABSTRACT STATE
Definition: rules
roles = references - [ci, c2, vi.v2.d2.niv, disp]
Definition: coherent name
n is name ~ consistent with R if
do not names. R e roles
and C indicator (n) = d1 or indicator (n) = R (information (n)))
Definition: consistent configuration
M is confiGuratIon ~ consistent with R si
M e configurations, R e r roles
and
V re references
R (r) = cl or R (r) = c2
left (M (r)) is name ~ consistent with R
and right (M (r)) is name ~ consistent with R
and CR (r) = v1 or R (r) = v2) and status (M (r)) = undecided
R (generator (M (r))) = level
and
nature (M (parent (M (r)))) t dead
iiaison (M (r)) is name ~ consistent with R
and R (r) = level and nature (M (r)) = cut R (previous (M (r))) = level
and R (r) = level and nature (M (r)) = active and level (M (r)) rO
R (previous (M (r))) = level
and i ru e references
ru is s ~ ultimate of precedent (M (r)) in M
and n1 (M (ru)) is name ~ consistent with R
and n2 (M (ru)) is name ~ consistent with R
and n3 (M (ru)) is name ~ consistent with R
Definition: representation
M, R, g is a representation of D, S Si
M e configurations R e roles ge references De e designations S e backups
and M is ~ consistent with R configuration
and # ne names CD (n) ## => n is name ~ consistent with R)
and M is d ~ representation of D
and R (g) = niv and nature <M (g)) tmort
and V rs references
R (r) = level and nature (M (r)) # dead
# S trails - references)
S (O) = g
andvj integers C j <i => S (j + 1) = previous (M (S (j))))
and S (i) = r
and i SC s scorrespondances
M is srepresentation of SC and SC (g) = S
and M, level (M (g)) is t-representation of D
Comment:
A role element is a memory allocation status for cells.

La marque disp qualifie les cellule disponibles, Les autres marques qualifient les cellules occupées et indiquent le rôle qu'elles jouent.The brand disp qualifies the available cells, the other brands qualify the occupied cells and indicate the role they play.

Un nom qui cite une cellule est nom,coh8rent si cette cellule est occupée et si son rôle est en accord avec ce nom. A name that cites a cell is name, coherent if that cell is busy and if its role matches that name.

Un état de mémoire est qualifié de configuratIon~cohérente si toutes les références rencontrées dans les cellules occupées sont des références de cellules occupées et dont le rôle est en accord avec le role induit par l'endroit qui fait référence.  A memory state is qualified as a coherent configuration if all the references encountered in the occupied cells are occupied cell references and whose role is in accordance with the role induced by the reference location.

La relation représentation relie l'état concret constitué de l'état de la mémoire des cellules et du registre géniteur~courant. un état d'allocation et l'état abstralt constitué de la désignation D et de la sauvegarde S. L'état d'allocation concret résulte du mécanisme d'allocation et de récupération de mémoire et dépend de l'état de ses mémoires propres: il est figuré ici par un role P.  The representation relation connects the concrete state consisting of the memory state of the cells and the current genitor register. an allocation state and the abstralt state consisting of the designation D and the backup S. The concrete allocation state results from the memory allocation and recovery mechanism and depends on the state of its own memories: he is represented here by a role P.

La mémoire est internement cohérente. Les noms confiés à l'utilisateur au titre de la désignation D sont cohérents. li n'y a qu'une seule sauvegarde S, et ses sous~sauvegardes, dans le système et tous les géniteurs actifs ou coupés participent à sa représentatIon: tous ces géniteurs sont accessibles par la chaine de références issue du registre géniteurcourant.  The memory is internally coherent. The names assigned to the user under designation D are consistent. There is only one S backup, and its sub ~ backups, in the system and all active or cut parents, participate in its representation: all these parents are accessible by the reference string from the current parent register.

De plus. la désignation D. qui est en relation de d,repr8sentation avec l'état de la mémoire, est également en relation de t~representation avec le champ niveau du géniteur courant. En effet, la référence du géniteur courant est systématiquement inscrite dans le champ géniteur des variables lors de l'exécution des commandes substituer. Ainsi la représentation d'un terme quelconque accessible par la désignation D est déjà sous une forme prête à être sauvegardée.  Furthermore. the designation D. which is in relation of d, representation with the state of the memory, is also in relation of t ~ representation with the field level of the current spawner. In fact, the reference of the current parent is systematically entered in the variable's parent field when executing the substitute commands. Thus the representation of any term accessible by the designation D is already in a form ready to be saved.

- ANNEXE 3
LES MECANISMES DU PROCESSUS D'EXECUTION
mécanisme recherche~représentant( nn nom ) nom
nn - n
boucle tantque n.indicateur ç (vl.v2J
I m 1 état~liaison [n.information] # e1
si el.statut = indécis alors état~géniteur [n.information] # eg
si el.statut = libre alors sortie
I Si eg.nature = mort alors sortie
I m I I liaison [n.information] # n
I Si n.indicateur = niv alors
I I I recherche~gén renrésentant(n.information) - n.Information)
n e résultat
Si nn fait référence à une variable lIée, la valeur de liaison est inspectée.
- ANNEX 3
MECHANISMS OF THE IMPLEMENTATION PROCESS
search mechanism ~ representative (nn name) name
nn - n
loop so n.indicator ç (vl.v2J
I m 1 state ~ link [n.information] # e1
if el.statut = undecided then state ~ parent [n.information] # eg
if el.statut = free then exit
I If eg.nature = death then exit
I m II link [n.information] # n
I If n.indicator = level then
III research ~ gen repository (n.information) - n.Information)
no result
If nn refers to an imported variable, the link value is inspected.

jusqu'à rencontre d'autre chose qu'une variable liée. De plus. si le nom alors obtenu est celui d'un niveau le géniteur actif représentant du géniteur cité par ce nom est recherché. C'est le nom finalement obtenu qu'on appelle représentant de
SI la mémoire est internement cohérente et sl le nom nn est cohérent. le mécanisme se termine et ie résultat est ultime de nn.
until there is something more than a linked variable. Furthermore. if the name then obtained is that of a level, the active parent representing the sire cited by this name is sought. This is the name finally obtained that is called representative of
IF the memory is internally consistent and sl the name is consistent. the mechanism ends and the result is ultimate of nn.

mécanisme recherche~gén~représentant (g : référence) : référence
g 2 g1
m étant~géniteur[g1] -étatgén
boucle tantque étatgén nature = coupe
1 m précédent[g1] # g1
1 m état~géniteur [g1] # étagén
g1 # résultat
Etant donné une référence à un géniteur. ce mécanisme rend la référence du premier géniteur actif dans la chaine commençant à ce géniteur, et de même niveau que lui.
search mechanism ~ gen ~ representative (g: reference): reference
g 2 g1
m being ~ spawner [g1] -etatgen
buckle soque state nature = cut
1 m previous [g1] # g1
1 m state ~ spawner [g1] # shelf
g1 # result
Given a reference to a parent. this mechanism makes the reference of the first active spawner in the chain beginning with this spawner, and of the same level as him.

SI la mémoire est cohérente et si g est la référence d'un géniteur non mort, le mécanisme se termine et le résultat est ultime de g. If the memory is coherent and if g is the reference of a non-dead parent, the mechanism ends and the result is ultimate of g.

mécanisme construire( ng.nd nom. mc :(cl,c2j ) nom
allocation~celluie ~ref
rnc.ref ^ résultat
recherche~représentant(ng) ^ rg
m rg # gauche [ ref ]
recherche~représentant(nd) e rd
m rd # droite [ref]
Une cellule est allouée. Elle est considérée sous le format constructeur. Deux noms sont rangés dans les champs gauche et droite. qui sont les noms représentants respectifs de ng et nd. Le résultat consiste -en la marque de nature du constructeur et la référence de la cellule.Sur la figure il, le nom représentant de vl:Cl est c1:C2 parce que la varlabie en Ci est liée, son statut étant Indécis et le géniteur correspondant non mort.
mechanism build (ng.nd name mc: (cl, c2j) name
allocation ~ celluie ~ ref
rnc.ref ^ result
search ~ representative (ng) ^ rg
m rg # left [ref]
search ~ representative (nd) e rd
m rd # right [ref]
A cell is allocated. It is considered in the manufacturer format. Two names are arranged in the left and right fields. who are the respective representative names of ng and nd. The result consists in the nature mark of the constructor and the reference of the cell. On figure 11, the representative name of v1: C1 is c1: C2 because the varlabie in Ci is linked, its status being Undecided and the parent correspondent not dead.

Le rôle de la cellule référencée par ret passe de disp à ci ( ou c2. selon la marque mo ). La désignatIon D est augmentée du nom cl:ret ( ou c2:r.f ).  The role of the cell referenced by ret passes from disp to ci (or c2, according to the mark mo). The designation D is increased by the name cl: ret (or c2: r.f).

mécanisme créer~variable mv :(vi,v2) ) nom
allocation~cellule ^ ref
mv.ref | résultat
m llbre,D - état~liaison[ref]
Une cellule est allouée. Elle est considérée sous le format variable. Son champ statut est initialisé à libre. Le résultat comporte la marque de nature mv et la référence de la cellule. Ceci est illustré sur la figure 12.
mechanism create ~ variable mv: (vi, v2)) name
allocation ~ cell ^ ref
mv.ref | result
m llbre, D - state ~ link [ref]
A cell is allocated. It is considered in the variable format. Its status field is initialized to free. The result includes the mark of nature mv and the reference of the cell. This is illustrated in Figure 12.

Le rôle de la cellule référencée par ref passe de disp à vl ( ou v2, selon la marque mv ). La désignation D est augmentée du nom vi:ref ( Ou v2:ret ). The role of the cell referenced by ref goes from disp to vl (or v2, according to the mark mv). The designation D is increased by the name vi: ref (Or v2: ret).

Cette cellule représente une nouvel élément des variables car elle n'est encore référencée depuis nullepart.This cell represents a new element of the variables because it is not referenced since nowhere.

mécanisme substituer( nv,nt nom )
recherche~représentant(nv) ^ rv
recherchereprésentant(nt) - rt
m
I indécis, géniteur~courant # état-liaison [rv. information]
I rt # liaison [rv. information]
Le nom représentant de nv cite une cellule qui. vue sous le format variable, est une variable libre. Cette variable subit une liaison, c'est-àdire que sont rangés dans ses champs statut géniteur et liaison respectivement la marque Indécis. la référence du géniteur courant et le nom représentant de nt. Sur la figure 13, le paramètre vi:Ci contient la référence d'une variable liée; son nom représentant cl:C2 est rangé comme valeur de liaison de la variable située en
C4.
substitute mechanism (nv, nt name)
search ~ representative (nv) ^ rv
searchrepresentative - rt
m
I undecided, spawner ~ current # state-binding [rv. information]
I rt # link [rv. information]
The representative name of nv quotes a cell that. view in variable format, is a free variable. This variable is linked, that is to say that are placed in its parent and status fields respectively the undecided mark. the reference of the current spawner and the representative name of nt. In FIG. 13, the parameter vi: Ci contains the reference of a linked variable; its name representing cl: C2 is ranked as the binding value of the variable located in
C4.

Le nom nv désigne, avant l'exécution de la commande, un élément v des variables. Le nom rw, ultime de nv, est un nom direct de v. Il cite donc la variable libre sur laquelle convergent toutes les représentations d'occurences de v. Par transformation de cette cellule en variable liée, toutes les occurences de v sont remplacées par des occurences du terme désigné par nt. Ce remplacement est effectif dans tous les termes accessibles par la désignation
D.Cependant. le champ géniteur de la cellule contient la référence du géniteur courant dont le niveau est supérieur à tous les niveaux couramment sauvegardés,
Les désignations propres à chaque niveau. en relation de t~représentation avec l'état de la mémoire. demeurent inchangées et le remplacement est donc Inaffectif dans les termes sauvegardés.
The name nv indicates, before the execution of the command, an element v of the variables. The name rw, ultimate of nv, is a direct name of v. He therefore cites the free variable on which all representations of occurrences of v. By transforming this cell into a linked variable, all occurrences of v are replaced by occurrences of the term designated by nt. This replacement is effective in all terms accessible by the designation
D.Cependant. the parent field of the cell contains the reference of the current parent whose level is higher than all the levels currently saved,
Designations specific to each level. in relation of t ~ representation with the state of the memory. remain unchanged and the replacement is therefore Inaffective in the terms saved.

mécanisme créer~donnée1( d donnée ) nom
dl,d - résultat
La création d'une donnée i consiste simplement à adjoindre la marque de nature à l'information passée en paramètre. Les données ne consomment pas de ressource de mémoire.
mechanism create ~ data1 (d data) name
dl, d - result
The creation of a datum i consists simply in adding the mark of nature to the information passed in parameter. The data does not consume memory resources.

mécanisme créer~donnée2 (d :donnée2) : nom
allocation~celluie - ref
d2.ref résultat m d # valeur~d2 [ref]
Une cellule est allouée pour contenir la donnée. Le résultat comporte la référence de cette cellule. Ceci est Illustré sur la figure 14.
mechanism create ~ data2 (d: data2): name
allocation ~ celluie - ref
d2.ref result md # value ~ d2 [ref]
A cell is allocated to hold the data. The result includes the reference of this cell. This is illustrated in Figure 14.

Le rôle de la cellule référencée par ret passe de disp à d2. La désignation
D est augmentée du nom d2:ret.
The role of the cell referenced by ret moves from disp to d2. Designation
D is increased by the name d2: ret.

mécanisme accéder~donnéel( nd nom ) données
recherche~représentant(nd) # n
n.information # résultat
Le résultat est obtenu en retirant au nom représentant de nd sa marque de nature.
mechanism access ~ data (nd name) data
search ~ representative (nd) # n
n.information # result
The result is obtained by removing from the representative's name his nature mark.

Le nom nd désigne un liement d des donnéesi. Le nom n, d~ultime de nd. The name nd denotes a link d of datai. The last name, the ultimate name of nd.

est un nom direct de d. Le nom n est donc de la forme d1:d et son champ
Information rendu et résultat vaut d.
is a direct name of d. The name n is therefore of the form d1: d and its field
Information given and result is worth d.

mécanisme accéder~donnée2 (nd :nom) :donnée2
recherche-représentant(nd) # n m valeur~d2 [n.information] # résultat
Le contenu de la cellule référencée par le nom représentant de nd est rendu en résultat.
mechanism access ~ data2 (nd: name): data2
search-representative (nd) # nm value ~ d2 [n.information] # result
The contents of the cell referenced by the representative name of nd is rendered as a result.

Le nom nd désigne un élément d des données2. Le nom n, d~ultime de nd, est un nom direct de d. Il cite donc une cellule au format valeur~d2 dont le contenu, rendu en résultat. vaut d. The name nd designates an element of data2. The last name of nd is a direct name of d. He therefore quotes a cell in the format ~ d2 value whose content, rendered as a result. is worth d.

mécanisme accéder~gauche( nc nom ) nom
recherchereprésentant(nc) ^ rc
m gauche [ rc.informationj ^ n
recherchereprésentant(n) - résultat
Le résultat est le nom représentant du nom trouvé dans le champ gauche de la cellule référencée par le nom représentant de nc.
mechanism access left (nc name) name
searchrepresentative (nc) ^ rc
m left [rc.informationj ^ n
searchrepresentative (n) - result
The result is the representative name of the name found in the left field of the cell referenced by the representative name of nc.

Le nom nc désigne un terme construit cona(tg,td). Le nom rc, d~ultime de nc, est un nom direct de cons(tg.td), il cite donc une cellule au format constructeur. The name nc designates a term built cona (tg, td). The name rc, the ultimate name of nc, is a direct name of cons (tg.td), so it quotes a cell in the constructor format.

Le résultat. ultime du nom n contenu dans le champ gauche de cette cellule.The result. ultimate name n contained in the left field of this cell.

désigne tg. De plus ce nom est. un nom direct de ig. ce qui permet d'affirmer que après une commande réduire ou reprendre la désignation D ne comporte que des noms directs. denotes tg. Moreover this name is. a direct name of ig. which makes it possible to affirm that after a command to reduce or to resume the designation D includes only direct names.

mécanisme accéder~droite( nc nom ) nom
recherche~représentant(nc)
m droite [rc.information] - n
recherche~représentant(n) $ résultat
Le fonctionnement est identique à celul de la commande accéder~gauche. Il est Illustré sur la figure 15.
mechanism access right (nc name) name
Search ~ representative (nc)
m right [rc.information] - n
search ~ representative (n) $ result
The operation is identical to that of the command access ~ left. It is illustrated in Figure 15.

mécanisme tester nature( n nom ) :marquedenature
recherche~représentant(n) # rn
rn.Indicateur # résultat
Le nom n désigne un terme t. Le nom rn. d~ultime de n, est un nom direct de t. Son champ indicateur, rendu en résultat. donne la nature de t.
mechanism test nature (n name): marquedenature
search ~ representative (n) # rn
rn.Indicator # result
The name n designates a term t. The name rn. d ~ ultimate of n, is a direct name of t. Its indicator field, rendered as a result. give the nature of t.

mécanisme comparer( ni.n2 nom ) :marque~de~comparaison recherche~représentant(ni) rnl
recherche~représentant (n2) # rn2
si rnl = rn2 alors égal - résultat
sinonsi rn1. indicateur t rn2.1ndicateur alors différent - résultat
sinon
I cas rn1,indicateur
I d2 alors
I m valeur~d2[rn1.information] #d1
I m valeur-d2[rn2.information[ #d2
I i si dl=d2 alors égal ^ résultat
sinon différent - résultat
I niv alors
I m état~géniteur [rn1. information
m I ni étaLgéniteur [ rn2.informationJ - eg2
I I s .niveau = eg2.niveau alors égal ^ résultat
sinon différent - résultat
I cl.c2 alors indécis - résultat
I vl.v2.di alors différent - résultat
Les noms n1 et n2 désignent deux termes ti et t2. Les noms rnl et rn2. dultimes de n1 et ns, sont des noms directs de ti et ts. Si rn1 est égal à rn2. ti est égal à t2 car un nom désigne au plus un terme. Les marques de rnl et rn2 sont sIgnificatives de la nature des termes ti et t2.Si ces marques sont différentes les termes sont donc nécessairement différents. Si les marques sont égales à d2. les termes sont des données2 dont les valeurs sont Inscrites dans les cellules au format valeur~d2 citées par rn1 et rn2. Le résultat est celui de la comparaison de ces valeurs. Si les marques sont égales à niv, les termes sont des niveaux dont les valeurs sont inscrites dans les champs niveau des cellules au format géniteur citées par rn1 et rn2. Le résultat est celui de la comparaison de ces valeurs. SI les marques sont égales à cl ou c2. les termes sont des termes construits dont la comparaison nécessiterait un parcours de cellules couteux et non désiré dans les applications visées. La machine répond non~décidé dans ce cas.
mechanism compare (ni.n2 name): ~ mark of comparison search ~ representing (ni) rnl
search ~ representative (n2) # rn2
if rnl = rn2 then equal - result
sinonsi rn1. indicator t rn2.1indicator then different - result
if not
I case rn1, indicator
I d2 then
I m value ~ d2 [rn1.information] # d1
I m value-d2 [rn2.information [# d2
I i if dl = d2 then equal ^ result
otherwise different - result
I then
I m state ~ spawner [rn1. information
m I nor etablenitor [rn2.informationJ - eg2
II s. Level = eg2.threshold then equal to result
otherwise different - result
I cl.c2 then undecided - result
I vl.v2.di then different - result
The names n1 and n2 denote two terms ti and t2. The names rnl and rn2. dultimes of n1 and ns, are direct names of ti and ts. If rn1 is equal to rn2. ti is equal to t2 because a name means at most one term. The marks of rnl and rn2 are indicative of the nature of the terms ti and t2.If these marks are different, the terms are necessarily different. If the marks are equal to d2. the terms are data2 whose values are inscribed in the cells in the format value ~ d2 cited by rn1 and rn2. The result is that of the comparison of these values. If the marks are equal to niv, the terms are levels whose values are written in the level fields of the parent format cells mentioned by rn1 and rn2. The result is that of the comparison of these values. IF the marks are equal to cl or c2. terms are constructed terms whose comparison would require costly and unwanted cell travel in the intended applications. The machine responds un decided ~ in this case.

Enfin les seuls cas restants pour les marques sont v1, v2 et dl: dans les cas vl ou v2, rnl et rn2 sont deux noms directs différents de variables et les variables sont différentes car un élément des variables n'est représenté que par une seule cellule. Dans le cas d1, rnl et rn2 sont deux noms directs différents de données et ces données sont différents car leurs valeurs sont les champs
Informatlon de rnl et rn2.
Finally the only remaining cases for the marks are v1, v2 and dl: in cases vl or v2, rnl and rn2 are two different direct names of variables and the variables are different because an element of the variables is represented by only one cell. In the case d1, rnl and rn2 are two different direct names of data and these data are different because their values are the fields
Informatlon of rnl and rn2.

mécanisme sauvegarder( nl,n2.n3 nom )
recherche~représentant(n1) # nn1
recherche~représentant(n2) - nn2
recherche~représentant(n3) # nn3
recherche~gen~représentant(géniteur~courant) # g1
m nni,nn2.nn3 &num;; nom~1~2~3[g1]
allocation~call~géniteur # g2
m état~géniteur [g1] # eg1
actif. (eg1. niveau+1) # eg2
m eg2 # état~géniteur [g2]
m géniteur~courant # précédent [g2]
g2 - géniteur~courant
Les noms représentants de n'i,n2,n3 sont sauvegardés dans le géniteur actif représentant de géniteur~courant. Sur la figure 16. il est en C12. Un nouveau géniteur est créé, son niveau est supérieur d'une unité à l'ancien c'est lui que repère ensuite géniteur~courant.
save mechanism (nl, n2.n3 name)
search ~ representative (n1) # nn1
search ~ representative (n2) - nn2
search ~ representative (n3) # nn3
search ~ gen ~ representative (spawner ~ current) # g1
m nni, nn2.nn3 &num;; name ~ 1 ~ 2 ~ 3 [g1]
allocation ~ call ~ parent # g2
m state ~ parent [g1] # eg1
active. (eg1, level + 1) # eg2
m eg2 # state ~ parent [g2]
m parent ~ current # previous [g2]
g2 - spawner ~ current
The representative names of i, n2, n3 are saved in the active spawner representing the current spawner. In figure 16. it is in C12. A new parent is created, its level is one unit higher than the old one, it is him that marks then spawner ~ current.

Avant l'exécution de la commande. le registre géniteur~courant contient la référence gc1 d'un géniteur qui correspond à la sauvegarde Savant. Après exécution, le registre géniteur~courant contient la référence g2 d'un géniteur actif. ce génituer actif est nouveau, le rôle de gt est passé de disp à Ive La référence g2 correspond à la nouvelle sauvegarde Saprès, En effet, son champ précédent contient gc1. quI correspond à Sovon'. et g1. qui est S~uitime de gal, contient dans ses champs ni. n2 ei n3 trois noms ni, nn2 et nn3 qui sont des noms directs des termes à sauvegarder. Ces noms, qui désignent ces termes dans la ilésignation D. les désignent également dans une désignation Dh. ou k est le niveau de gc1. La désignation De est compatible avec l'état de la mémoire selon la relation t-représentation grace à l'inscription systématique de la référence du géniteur courant dans le champ géniteur des variables lors des commandes substItuer. La nouvelle sauvegarde est donc déduite de l'ancienne par ajout en tête du triplet de termes désignés par les paramètres de la commande. Sa taille. k+l. est inscrite dans le champ niveau du nouveau géniteur courant référencé par sz. On remarquera que les noms inscrits dans les géniteurs sont des noms directs. ce qui permet d'affirmer que les désignations
Dk propres à chaque niveau ne comportent que des noms directs.
Before the execution of the command. the current spawning register contains the reference gc1 of a spawner that corresponds to the Savant backup. After execution, the current breeder register contains the reference g2 of an active parent. this active generator is new, the role of gt has changed from disp to Ive. The reference g2 corresponds to the new backup Saprès, Indeed, its previous field contains gc1. which corresponds to Sovon '. and g1. which is S ~ uitime of gal, contains in its fields neither. n2 ei n3 three names ni, nn2 and nn3 which are direct names of the terms to be saved. These names, which designate these terms in the designation D. also designate them in a designation Dh. where k is the level of gc1. The designation De is compatible with the state of the memory according to the relation t-representation thanks to the systematic inscription of the reference of the current spawner in the field spawner of the variables during the commands to substitute. The new backup is deduced from the old by adding to the top of the triplet terms defined by the parameters of the command. Her size. k + l. is entered in the level field of the new current parent referenced by sz. It will be noted that the names inscribed in the parents are direct names. which makes it possible to affirm that the designations
Dk's at each level have only direct names.

mécanisme reprendre : < nom,nom.nom > état~géniteur [géniteur~courant[ # étatg
1 recalage,sucreprise(Atatg .niveau-l)
2
i géniteur~courant # g
I boucle tantque étatg.nature = coupé
I I m précédenttgj ~ ng I I m mort,# # état~géniteur [g]
I I m ng # g
I I m état~géniteur [g] # étatg
I m précédent [ g3 | géniteur~courant
I m mort,# - étaLgéniteur(gJ
recherche~gén~représentant (géniteur~courant) # gr
m nom~1~2~3 [ gr ] - ni.n2.n3
3 d8marrage,fourn8e(g8niteurcourant. nl.n2.n3) - géniteur~courant
ni,n2.n3 - résultat
La strate précédente doit être reprise, pour effectuer un retour en arrière et récupérer les trois termes sauvegardés sous forme de trois noms. Sur la figure 17. ces noms sont dans le géniteur situé en C12.
resume mechanism: <name, name.name> state ~ parent [parent] ~ current [# stateg
1 registration, sugar (Atatg. Level-1)
2
i parent ~ current # g
I loop while stateg.nature = cut
II m previoustgj ~ ng II m dead, # # state ~ spawner [g]
II m ng # g
II m state ~ spawner [g] # stateg
I m previous [g3 | ~ current parent
I m death, # - etablenitor (gJ
search ~ gen ~ representative (spawner ~ current) # gr
m noun ~ 1 ~ 2 ~ 3 [gr] - ni.n2.n3
3 start-up, supply (current-feeder nl.n2.n3) - spawner ~ current
ni, n2.n3 - result
The previous layer must be resumed, to go back and retrieve the three terms saved as three names. In figure 17. these names are in the parent located at C12.

Un recalage est demandé en 1 pour tenir à jour les positions respectives du processus d'exécution et du processus de récupération. Ce dernier, qui traite les strates par niveaux décroissants, risque en effet d'être rattrapé par le processus d'exécution à l'occasion de reprendre. Une opération de forcage au niveau inférIeur est alors prise à son égard. A registration is requested in 1 to maintain the respective positions of the execution process and the recovery process. The latter, which treats the strata by decreasing levels, may indeed be caught up by the process of execution at the opportunity to resume. A forced operation at the inferior level is then taken with respect to it.

En 2, tous les géniteurs de la strate en sommet de pile, c'est-à-dire d'éventuels géniteurs coupés et un actif. situés sur la figure en C10 et C18, sont mis à mort. Ceci a l'effet indirect de rendre à nouveau libres les variables qui avaient été liées pendant la strate qu'on vient d'abandonner. En effet. leur champ géniteur pointe sur ces géniteurs désormais morts, ce qui équivaut à être libre. In 2, all the parents of the stratum at the top of the stack, that is to say any cutters and an active parent. located in figure C10 and C18, are put to death. This has the indirect effect of making free again the variables that were linked during the stratum that has just been abandoned. Indeed. their spawning field points to these dead spawners, which is equivalent to being free.

Le processus de récupération s'occupera de son côté de normalIser la situation en notant l'indication de liberté dans la variable eile-meme. permettant ainsi, en différé, de détruire les géniteurs morts et de récupérer la place qu'ils occupent.The recovery process will take care of its side of normalizing the situation by noting the indication of freedom in the variable itself. thus allowing, in deferred, to destroy the dead spawners and to recover the place which they occupy.

En 3 il est tiré parti du fait que la désignation est réduite aux trois noms rendus en résultat pour déclencher éventuellement un cycle de récupération de mémoire. Ceci est identique à ce qui est réalisé par une commande réduire. In 3 it is taken advantage of the fact that the designation is reduced to the three names returned as result to possibly trigger a memory recovery cycle. This is identical to what is achieved by a reduce command.

Avant l'exécution de la commande, géniteur~courant contient la référence gci d'un géniteur qui correspond à la sauvegarde Savant de taille k. Savant étant différente de la sauvegardevide. le champ précédent du géniteur actif gcrl équivalent à gcl contient la référence gc2 d'un géniteur qui correspond à la soussauvegarde de Savant de taille k-1, Après exécution, le registre géniteur~courant contient gc2 et la nouvelle sauvegarde Après est donc déduite de Savant par retrait de son élément de tête.La nouvelle désignation D est la désignation Dk-l qui associe aux trols noms rendus en résultat les termes sauvegardés par le niveau k-1, Cette désignation k-i. compatible avec l'état de la mémoire selon la relation t~représentation, est rendue compatible selon la relation d~représentation en transformant tous les géniteur de niveau k en géniteurs morts.  Before executing the command, spawner ~ current contains the gci reference of a spawner that corresponds to the Savant backup of size k. Savant being different from the backup. the previous field of the active parent gcrl equivalent to gcl contains the reference gc2 of a parent that corresponds to savant's under-saving of size k-1. After execution, the current parent register contains gc2 and the new After backup is deduced from Savant by removal of its head element.The new designation D is the designation Dk-l which associates with the three names returned as terms saved by the level k-1, This designation ki. compatible with the state of the memory according to the relation t ~ representation, is made compatible according to the relation d ~ representation by transforming all the spawner level k into dead spawners.

mécanisme obtenir~niveau~courant : nom
niv.géniteur~courant # résultat
Le résultat est la référence du géniteur courant. avec l'indicateur niv. Ceci est Illustré sur la figure 18.
mechanism get ~ level ~ current: name
niv.generator ~ current # result
The result is the reference of the current parent. with the indicator niv. This is illustrated in Figure 18.

Ce nom désigne en effet la taille de la sauvegarde S. directement si le géniteur courant est actif, indirectement s'il est coupé. This name refers to the size of the backup S. directly if the current parent is active, indirectly if it is cut.

mécanisme couper( n nom )
m état~géniteur [n.information] - eg~cible
m état~géniteur [géniteur~courant] -eg
si eg~cible.niveau < eg.niveau alors
I i recalage~sur~coupure (eg~ci ble. niveau)
1 2
I I géniteur~courant # g
I I boucle tantque eg.niveau > eg~cible.niveuau
I I I m coupé. eg~cible niveau # état~géniteur [g] I I I m précédent[g] ≈g g
I I I m état~géniteur[g] # eg
Le nom n désigne un niveau, c'est-à-dire qu'il comporte la référence d'un géniteur non mort. il faut détruire les strates en haut de la pile de sauvegarde qui sont postérieures à la strate du géniteur cité.Sur la figure 19, ce géniteur est en Cii.
mechanism cut (n name)
state ~ breeder [n.information] - eg ~ target
m state ~ spawner [spawner ~ current] -eg
if eg ~ target.level <eg.level then
I ~ resetting ~ on ~ cutoff (eg ~ ble ble level)
1 2
II spawner ~ current # g
It loops as much as>level> eg ~ target.number
III m cut. eg ~ target level # state ~ spawner [g] III m previous [g] ≈gg
III m state ~ parent [g] # eg
The name n designates a level, that is to say it includes the reference of a non-dead parent. it is necessary to destroy the strata at the top of the backup stack which are posterior to the stratum of the mentioned spawner. On figure 19, this spawner is in Cii.

1 a pour rôle de traiter la situation du processus de récupération, pour le cas où il serait en cours de marquage d'une strate destinée à être détruite. Its role is to deal with the situation of the recovery process, in case it is in the process of marking a stratum destined to be destroyed.

En 2, le processus d'exécution met à coupé tous les géniteurs jusqu'au niveau visé exclu. et réajuste leur niveau à celui visé, qui vaut ì dans l'exemple de la figure 19. In 2, the execution process cuts off all parents to the excluded target level. and readjust their level to that referred, which is worth ì in the example of Figure 19.

mécanisme réduire (n1, n2, n3 : nom) : < nom,nom,nom >
recherche~représentant(n1) # nn1 recherchereprésentant(n2) - n n2 nn2
recherche~représentant(n3) # nn3
nn1,nn2,nn3 # résultat
1 démarrage~fournée (géniteur~courant,nn1,nn2,nn3) # géniteur~courant
Les représentants des trois noms passés en paramètre sont rendus en résultat.
reduce mechanism (n1, n2, n3: name): <name, name, name>
search ~ representative (n1) # nn1 searchrepresentative (n2) - n n2 nn2
search ~ representative (n3) # nn3
nn1, nn2, nn3 # result
1 start ~ batch (spawn ~ current, nn1, nn2, nn3) # spawner ~ current
Representatives of the three names passed in parameter are rendered in result.

Ainsi sur la figure 20 les noms cl:C3. niv:C10 et di:a sont respectivement des équlvallents directs des noms v1:CO, niv:Cl i et dl:a. Ces trois noms résument les accès dont l'utilIsateur dispose désormais dans le cadre de la désignation.Thus in Figure 20 the names cl: C3. niv: C10 and di: a are respectively direct equlvallents of the names v1: CO, niv: Cl i and dl: a. These three names summarize the access that the user now has as part of the designation.

Ces InformatIons sont confiées à une tentative de démarrage de fournée en 1. qui sera effective si le processus de récupération est en attente à ce moment-là
Après exécution de cette commande la désignation offerte à l'utilisateur ne comporte que les trois noms directs rendus en résultat ainsi que des noms directs désignant les sous termes des termes accessibles par ces trois noms.
These InformatIons are assigned to an attempt to start batch 1. This will be effective if the recovery process is pending at that time.
After executing this command, the designation offered to the user includes only the three direct names returned in the result as well as direct names designating the sub-terms of the terms accessible by these three names.

Ceci est du à la propriété des commandes d'accès aux termes accédergaucbe et accéder~droite qui ne rendent en résultat que des noms directs. Ainsi sur la flgure 20 les noms vi:C9 et vi:C8 ont disparu de la désignation bien que les cellules C8 et C9 participent toujours à la représentation des termes désignables après exécution de la commande. D'autre part les noms tels que cl:Cl et c2:C2 qui ne participent pas à la représentation des termes désignables après exécution de la commande. ont également disparu de la désignation.This is due to the property of access commands to the terms access and access right ~ which result in only direct names. Thus on flgure 20 the names vi: C9 and vi: C8 have disappeared from the designation although C8 and C9 cells still participate in the representation of the designatable terms after execution of the command. On the other hand the names such as cl: Cl and c2: C2 which do not participate in the representation of the designatable terms after execution of the command. have also disappeared from the designation.

mécanisme Initialiser Inítialisation~gestion~mémoire
allocation~cell~géniteur - g
m actif,O # état~géniteur [g]
g # géniteur~courant
Un géniteur est créé. il sera toujours actif et restera le plus bas dans la pile -de sauvegarde. Son niveau est O et son champ précédent est sans signification.
mechanism Initialize Initization ~ management ~ memory
allocation ~ cell ~ parent - g
active m, O # state ~ parent [g]
g # spawner ~ current
A parent is created. it will still be active and will remain the lowest in the backup stack. Its level is O and its previous field is meaningless.

- ANNEXE 4
RECUPERATION DE CELLULES. SYNCHRONSATION ET MISE EN OEUVRE
PROCESSUS DE RECUPERATION
STRUCTURE DE DONNEES
LA MEMOIRE DES STATUTS D'ALLOCATION
Le type d'information statut~d'allocation a pour valeurs possibles {fournée1, fournée2. disponible 1. Le processus de récupération utilise un tableau statut~alloc de mémoire de type statut~d'allocation. Ce tableau est indicé par une référence.
- ANNEX 4
RECOVERY OF CELLS. SYNCHRONIZATION AND IMPLEMENTATION
RECOVERY PROCESS
DATA STRUCTURE
THE MEMORY OF ALLOCATION STATUS
The type of information status ~ allocation has for possible values {batch1, batch2. available 1. The recovery process uses a status ~ alloc table of status ~ allocation type memory. This table is indexed by a reference.

Commentaire:
A chaque cellule est associe un statut d'allocation, Si celui-ci est disponible alors la cellule est considérée comme étant inutilisées par le processus d'exécution. Les deux valeurs fournée1 et fournée2 sont les statuts d'allocation des cellules utilisées. II y a deux valeurs afin de permetire le parallélisme entre le processus d'exécution, consommateur de cellules, et le processus de récupération, productsur de cellules dispenibles.
Comment:
Each cell is associated with an allocation status, if it is available then the cell is considered as being unused by the execution process. The two values, batch1 and batch2, are the allocation statuses of the cells used. There are two values in order to allow the parallelism between the execution process, cell consumer, and the recovery process, productsur of available cells.

LES REGISTRES
registre niveau~marquage : niveau
registre géniteur~sommat : référence
registre nom1, nom2, nom3 : nom
registre fornées~courante : {fournée1, fournée2}
Commentaire:
Les registres niveau~marquage et géniteur~sommet définissent la position de la strate couramment sous marquage dans la pile do sauvegarde. Les registres nomi, nom2, nom3 définissent les trois termes conservés dans la strate.
THE REGISTERS
register level ~ marking: level
spawner register ~ sommat: reference
register name1, name2, name3: name
forne register ~ current: {batch1, batch2}
Comment:
The level ~ tagging and spawner ~ level registers define the position of the currently marked stratum in the backup stack. The registers nomi, nom2, nom3 define the three terms preserved in the stratum.

Une cellule est marquée si le contenu de son statut~d'allocation" égale celui du registre fournée~courante : On marque' une cellule en rangeant dans son statut~d'allocatIon le contenu du registre fournée~courante. A cell is marked if the content of its ~ allocation status equals that of the current batch register: A cell is marked by storing in its allocation status the content of the current batch register.

RECUPERATION. PRINCIPE DES FOURNEES
mécanisme récupératIon
marquage : ramassage : attente~founée
La récupération de mémoire se fait selon le principe des fournées. Dans le cadre d'une fournée, le processus de récupération marque les cellules accessibles puis ramasse les cellules non marquées, c'est à dire les rend disponibles à nouveau.
RECOVERY. PRINCIPLE OF FURNACES
recovery mechanism
marking: pickup: waiting ~ founée
The recovery of memory is done according to the principle of the batches. As part of a batch, the recovery process marks accessible cells and then picks up unmarked cells, ie makes them available again.

Le principe des fournées peut être brièvement décrit ainsi: la requête demarrage~fournXe décrite plus loin découpe le temps en fournées successives. The principle of the batches can be briefly described as follows: the start-up request described below divides the time into successive batches.

A tout Instant l'espace des cellules allouées est partîtionné en deux espaces.At all times the space of allocated cells is divided into two spaces.

L'espace confirmé contient les cellules allouées depuis le début de la fournée et les cellules visitées par le marquage en cours. L'espace non confirme contient les autres cellules.The confirmed space contains the cells allocated from the beginning of the batch and the cells visited by the current marking. The unconfirmed space contains the other cells.

En fin de marquage. toutes les cellules de l'espace non confirmé sont rendues disponibles. C'est le ramassage. At the end of marking. all cells in the unconfirmed space are made available. It's the pickup.

Après ramassage. l'espace non confirmé est alors vide. Une nouvelle fournée de récupératIon peut commencer avec un nouvel espace confirmé vide et avec un nouvel espace non confirmé égal à l'ancien espace confirmé, il y a basculement de fournée. Le registre fournée~courante permet l'identification de l'espace confirmé. alternativement par fournée et fournée2. After pickup. the unconfirmed space is then empty. A new reclamation batch can start with a new empty confirmed space and with a new unconfirmed space equal to the old confirmed space, there is batch switching. The current batch register allows the identification of the confirmed space. alternatively by batch and batch2.

Parfois, le processus de récupération est interrompu en cours de marquage et forcé par le processus d'exécution à recommencer son activité après que les registres qui définIssent son travail aient été réajustés, sans qu Il y ait changement de fournée. Sometimes, the recovery process is interrupted during marking and forced by the execution process to resume its activity after the registers that define its work have been readjusted, without a batch change.

MARQUAGE
mécanisme marquage
boucle tantque niveau~marquage # 0
I il marquage~terme(nom1) ; marquagejerme(nom2); marquagejerme(nom3)
I sauv 12
I I d8cr8mentation,niveau,marquage
I disjoint # situation~exécution
Ce mécanisme a pour tache de marquer les cellules utiles à la représentatIon de l'état défini par génîteur~sommet, niveau~marquage, nomi, nom2. nom3 au moment de son lancement. Ce mécanisme traite les niveaux de la pile de sauvegarde l'un après l'autre. à partir de celui détermIné par génituer~sommet, dans l'ordre décroissant. On profite aInsi de la façon dont l'ensemble des cellules qui participent à la représentatIon des termes d'une strate recouvre partiellement l'ensemble des cellules qui participent à la reprFsentatlon- des termes des strates de niveau Inférieur, pour limiter le parcours aux cellules non déjà marquées, comme il sera précisé à l'occasIon de l'exposé du mécanisme marquage~terme.
MARKING
marking mechanism
loop while level ~ marking # 0
I it marking ~ term (name1); marquagejerme (name2); marquagejerme (nom3)
I saved 12
II d8cr8mentation, level, marking
I disjoint # situation ~ execution
This mechanism is used to mark cells useful for the representation of the state defined by gener ~ vertex, level ~ marking, nomi, nom2. name3 at the time of its launch. This mechanism processes the levels of the backup stack one after the other. from the one determined by gen- erate ~ vertex, in descending order. We take advantage of the way in which all the cells that participate in the representation of the terms of a stratum partially cover all the cells that participate in the representation of the terms of the lower level strata, in order to limit the path to the cells. not already marked, as will be specified on the occasion of the presentation of the mechanism marking ~ term.

En 11 sont marquées les cellules servant à la représentatIon des termes mémorisés par le niveau. In 11 are marked the cells serving for the representation of the terms memorized by the level.

En 12 il y a passage au niveau Inférieur. Le processus d'exécution devient certainement disjolnt.  In 12 there is passage to the lower level. The process of execution certainly becomes disjointed.

mécanisme marquage~terme( nn nom )
nn # n : nulle~part # sorte~endroit ; init~pile~parcours
boucle parcours
I boucle 1 descente tantque n,indicateur e{v1,v2,c1,c2] I I n.information # rcell
I I test~si~marquée (rcell) # m
si si m = vrai alors 11 ; sortie descente
I cas n.indicateur
I I vi,v2 alors I I I 121
I I I I normalisation~liaison(rcell) # statut
I I si statut = libre alors sortie descente I 122
I I I I liais # sorte~endroit ; rcell # rcel~endroit I I I I m liaison [rcell] # n
I I I I empile (remonter, rcell)
I I c1,c2 alors
I I 13 I I I g~cons # sorte~endroit ; rcell # rcell~endroit
I I I m gauche[rcell] ^ n
I I I I empile (descendre-droite, rceit)
I 2
I I cas n.indicateur
I I v1, v2 alors marquage~cellule(rcell)
I I d2 alors marquage~cellule(n.information)
I I niv alors 20 normalisation~atome~niv(n.information.
marking mechanism ~ term (nn name)
nn # n: none ~ part # so ~ place; init ~ battery ~ course
loop course
I loop 1 descent as n, indicator e {v1, v2, c1, c2] II n.information # rcell
II test ~ if ~ marked (rcell) # m
if if m = true then 11; descent exit
I case n.indicator
II vi, v2 then III 121
IIII normalization ~ binding (rcell) # status
II if status = free then exit descent I 122
IIII liais # so ~ place; rcell # rcel ~ place IIII m binding [rcell] # n
IIII Stack (Reassemble, rcell)
II c1, c2 then
II 13 III g ~ cons # so ~ place; rcell # rcell ~ place
III m left [rcell] ^ n
IIII Stack (go down-right, rceit)
I 2
II case n.indicator
II v1, v2 then tagging ~ cell (rcell)
II d2 then labeling ~ cell (n.information)
He then levels 20 normalization ~ atom ~ niv (n.information.

I I sorte~endroit,rcell~endroit)
I boucle remontée
I I dépile # drapeau,quel~faire, rcell
I I si drapeau ~ pile~vide alors sortle parcours
I I si quoi~faire # remonter alors sortie remontée
I I marquage~cellule(rcell)
I 4
I I d~cons # sorte~endroit : rceil # rcell~endroit
I I m droite[rcell] ~ n
I I empile (remonter rcell)
Ce mécanisme parcourt les cellules qui participent à la représentation du terme désigné par nn afin de Bss marquer.Ceci consiste à parcourir un arbre. dcn: les noeuds sont constitués par les cellules portant des variables libres ou des constructeurs, et les feuilles sont constituées par les variables libres et les atomes. Le parcours est effectué en descendant prioritairement à gauche.
II sort ~ place, rcell ~ place)
I loop up
II stains # flag, what to do, rcell
II if flag ~ stack ~ empty then exit course
II if what ~ do # go up then exit back up
II marking ~ cell (rcell)
I 4
II d ~ cons # sort ~ place: rceil # rcell ~ place
II m right [rcell] ~ n
Stack II (go up rcell)
This mechanism traverses the cells that participate in the representation of the term designated by nn in order to mark Bss. This consists of traversing a tree. dcn: the nodes are constituted by the cells bearing free variables or constructors, and the leaves are constituted by the free variables and the atoms. The route is made by descending primarily on the left.

Pour gérer ce parcours, il ost utillsé une mémoire auxiliaire fonctionnant en plle associée aux mécanismes
init~pile~parcours qui inltlalise la pile et l'état vide,
empile( : {remonter, descendre~droite}, :référence) qui empile les paramètres, dépile : < {pile~vide, pile~non~vide}, {remonter, descendre~droite}, référence > qui rend en résultat les informations dépilées sauf si la pile est vide, auquel cas le résultat est pllel~vide.
To manage this course, it uses an auxiliary memory functioning in plle associated with the mechanisms
init ~ pile ~ course that inltise the pile and the empty state,
Stack (: {go up, go down ~ right},: reference) which stacks the parameters, unpacks: <{stack ~ empty, stack ~ no ~ empty}, {go up, go down ~ right}, reference> which returns the information depilated unless the battery is empty, in which case the result is pllel ~ empty.

La descente à travers un noeud consiste à empiler la référence du noeud, avec l'indication de ce qu'il faudra faire à la remontée, lorsqu'on aura dépilé cette référence.  The descent through a node consists in stacking the reference of the node, with the indication of what it will be necessary to make the ascent, when one has depilated this reference.

Le marquage des noeuds se fait lors de la remontée. de sorte que si une cellule est marquée, alors toutes les cellules accessibles depuis cette cellule sont marquées. Cette propriété est nécessaire pour que les abandons de marquage provoqués par les mécanismes recalagesurreprlse et recalagesurcoupure puissent s'effectuer en laIssant une situation de marquage cohérente. The marking of the nodes is done during the ascent. so that if a cell is tagged, then all accessible cells from that cell are marked. This property is necessary so that the abandonment of marking caused by the mechanisms recalagesurreprlse and recalagesurcoupure can be done by laIssant a situation of marking consistent.

1 Seuls les noms de variables ou de termes construits peuvent conduire le parcours à descendre, avec empilement de la référence de la cellule correspondante. Pour ces noms, Il n'a servi å rien de se souvenir de l'endroit où se trouvait leur occurence, car elle n'aura pas à être mise à jour. 1 Only the names of variables or constructed terms can lead the path down, with stacking of the reference of the corresponding cell. For these names, there was nothing to remember where their occurrence was, because it will not have to be updated.

il Le parcours tombe sur une cellule déjà marquée. Il ne descendra pas davantage. En effet, si une cellule est accessible dans le cadre de deux niveaux i et i tels que i < J l'ensemble des cellules auquel la cellule donne accès dans le cadre de i est une partie de l'ensemble auquel elle donne accès dans le cadre de i: la différence de parcours venant exclusivement de la manière dont sont Interprétées les cellules variables auxquelles cette cellule donne accès. The course falls on a cell already marked. He will not go down further. Indeed, if a cell is accessible under two levels i and i such that i <J the set of cells to which the cell gives access in the context of i is a part of the set to which it gives access in the i: the difference of course coming exclusively from the way in which the variable cells to which this cell gives access are interpreted.

Donc, à condition de parcourir les strates par niveaux décroIssants, lorsqu'on rencontre une cellule qui a déjà été marquée lors du parcours, on peut faire l'économie du parcours des cellules auxquelles elle donne accès dans le cadre du niveau sous marquage, car elles sont certainement déjà marquées.So, as long as you walk through the layers by decreasing levels, when you encounter a cell that has already been marked during the course, you can skip the path of the cells to which it gives access under the level under marking, because they are certainly already marked.

Ce phénomène est Illustré sur la figure 21. Les ensembles de cellules E1 et
EO représentent respectivement les termes des strates de niveau 1 et O conservées dans les géniteurs Cil et Ci3. L'intersection de El et EO contient les cellules C5, C6 et C7 qui représentent pour le niveau 1 les termes
cons1 (cons1 (b. cons1 (b,c)),a),
a,
cons1 (b,cons1 (b,c)),
et qui représentent pour le niveau O les termes
cons1 (x,y),
x,
y.
This phenomenon is illustrated in Figure 21. The sets of cells E1 and
EO represent respectively the terms of the level 1 and O strata conserved in the Cil and Ci3 parents. The intersection of E1 and E0 contains the cells C5, C6 and C7 which represent for level 1 the terms
cons1 (cons1 (cons1 (b, c)), a),
at,
cons1 (b, cons1 (b, c)),
and which represent for level O the terms
cons1 (x, y),
x
there.

Pour chacune de ces cellules, le terme représenté par elle au niveau 1 est une Instance du terme qu'elle représente au niveau 0. For each of these cells, the term represented by it at level 1 is an Instance of the term that it represents at level 0.

Il se peut que le processus rencontre une cellule qul est marquée non pas parce que lui-même l'a déjà marquée lors de son parcours des strates, mais parce qu'elle a été allouée récemment, c'est-a-dire au cours de la fournée courante, au processus d'exécution. Le principe de ne pas parcourir les cellules auxquelles elle donne accès reste valable. car elle conduit à des cellules dont chacune est solt nouvellement allouée, donc automatiquement marquée, solt accessible au début de la fournée, et donc destInée à subir le marquage par ailleurs. It may be that the process encounters a cell that is not marked because it has already marked it during its strata journey, but because it has been allocated recently, that is, during from the current batch, to the process of execution. The principle of not going through the cells to which it gives access remains valid. because it leads to cells each of which is newly allocated, therefore automatically marked, solt accessible at the beginning of the batch, and therefore destined to undergo marking elsewhere.

121 Le parcours a rencontré une cellule non encore marquée, portant une variable. PrIse de décIsion s'il faut la considérer comme llbre vue du niveau sous marquage, auquel cas il faut cesser de descendre, ou bien comme liée, auquel cas le parcours traverse la liaison et continue à descendre. 121 The run encountered an unmarked cell carrying a variable. Take a decision if it is to be considered as the sight of the level under marking, in which case it is necessary to stop descending, or as bound, in which case the route crosses the link and continues to descend.

122 Traversée de la liaison. Le parcours s'attaque à la valeur de liaison de la variable et descend. Ceci se traduit par l'empilement de la référence à la variable. On doit aussi mémoriser à court terme l'endroit d'occurence du nom attaqué, c'est-à-dire la référence à la variable et l'IndIcatIon qu'il s'agit d'une valeur de lIaison, pour le cas où le nom serait de type niveau, ce qui ne sera découvert qu'au tour de boucle suivant.  122 Crossing the link. The path attacks the link value of the variable and goes down. This results in the stacking of the reference to the variable. We must also memorize in the short term the place of occurrence of the name attacked, that is to say the reference to the variable and the IndIcatIon that it is a value of the season, for the case where the name would be of type level, which will only be discovered at the next loop turn.

Dans ce cas. on devra rectifier le contenu de l'endroit où le nom apparaissait, en y mettant un nouveau nom qui court-circuite les géniteurs coupés. In that case. we must rectify the content of the place where the name appeared, by putting a new name which bypasses the cutters.

13 Le parcours a rencontré une cellule non encore marquée, portant un constructeur. Le parcours va descendre dans sa partie gauche, d'où l'empilement de la référence de la cellule, avec une directive qui servira, quand le parcours atteindra à nouveau cette cellule lors de la remontée, à décider de l'action à entreprendre. à savoir redescendre à droite piutôt que remonter encore. On mémorise aussi à court terme l'endroit d'occurence du nom dans la partie gauche du constructeur. pour la même raison qu'en 122,
2 Diverses actions sont entreprises, correspondant å diverses sortes de feuilles du parcours.
13 The course encountered a cell not yet marked, carrying a builder. The course will descend to the left, hence the stacking of the reference cell, with a directive that will serve, when the course will reach again this cell during the ascent, to decide the action to be taken. to go back down to the right rather than go up again. We also memorize in the short term the place of occurrence of the name in the left part of the constructor. for the same reason as in 122,
2 Various actions are undertaken, corresponding to various kinds of sheets of the course.

23 Pour un atome niveau. il faut peut-être modifier le contenu de l'endroit où il apparaît pour lui faire citer le géniteur actif représentant un géniteur coupe. Ainsi. å la fin du marquage. il ne subsistera pas de références à des géniteurs coupés non marqués. 23 For a level atom. it may be necessary to modify the content of the place where it appears to make him quote the active parent representing a cutter. So. at the end of the marking. there will be no references to unmarked cutters.

4 Préparation pour redescendre å droite. 4 Preparation to go down to the right.

mécanisme normalisation~liaison ref réfé-rence ) : (lia,liéaj
m état~liaison [ref] - el
si e1, statut=libre alors libre - résultat : sortie
état~géniteur [e1.géniteur] # étatgén
Si étatgén nature - mort alors
I 11 m libre, # # état~liaison [ref]
I libre # résultat : sortie
Si étatgén, niveau > niveau~marquage alors 111 ; I libre # résultat ; sortie
2
I liée # résultat
I Si étatgén, nature = coupé alors 21
I I recherche~gén~représentant(e1.génitout) I I m indécis.g2 # état~liaison [ref]
Ce mécanisme décide si la variable portée par la cellule do référence roE est vue comme libre ou comme liée depuis le niveau~marquage.
normalization mechanism ~ link ref reference): (lia, lienaj
m state ~ link [ref] - el
if e1, status = free then free - result: output
state ~ spawner [e1.generator] # stategener
If stategén nature - death then
I 11 m free, # state ~ link [ref]
I free # result: exit
If state, level> level ~ then mark 111; I free # result; exit
2
I linked # result
I If state, nature = cut then 21
II search ~ gen ~ representative (e1.génitout) II m undécis.g2 # state ~ link [ref]
This mechanism decides whether the variable carried by the reference cell roE is seen as free or linked from the level ~ marking.

A cette occasion. il rectifie certaines informations dans le but de faire disparaitre les références à des géniteurs morts ou coupés pour pouvoir ensuite récupérer la mémoire qu'ils occupent.On this occasion. it rectifies certain information in order to remove references to dead or cut spawners to then recover the memory they occupy.

li La variable est libre dans l'absolu. On normalise la situation en ramenant cette indication dans la cellule de la variable elle-même. Ceci permet de ramasser par la suite les cellules occupées par des géniteurs morts, puisqu'il n'y aura plus de références à eux. Ceci est Illustré sur la figure 23. The variable is free in absolute terms. We normalize the situation by bringing this indication back into the cell of the variable itself. This makes it possible to pick up the cells occupied by dead spawners, since there will be no more references to them. This is illustrated in Figure 23.

111 La variable est liée. mais dans le cadre d'un niveau supérieur au niveau sous marquage: elle est donc considérée comme libre vue de ce niveau. Sa valeur de liaison n'est pas prise en consIdération. et le géniteur responsable de sa liaison n'est pas inspecté. 111 The variable is linked. but in the context of a level higher than the level under marking: it is therefore considered as free from this level. Its binding value is not taken into account. and the parent responsible for his affair is not inspected.

2 La variable est certainement liée vue du niveau sous marquage.  2 The variable is certainly related to the level under marking.

21 Normalisation de la référence depuis la variable au géniteur responsable de la liaison: cette référence est installée pour indiquer directement le géniteur actif correspondant au géniteur coupé. Ceci est illustré sur la figure 24. Grace à cela. au fur et à mesure que le marqueur attaque les niveaux dans l'ordre décroissant, la disparition des références aux géniteurs coupés ayant un niveau inférieur au niveau attaque permet, à la fin du traitement du niveau. de mettre à mort tous ses géniteurs coupés, et ultérieurement de les ramasser. 21 Standardization of the reference from the variable to the parent responsible for the link: this reference is installed to directly indicate the active parent corresponding to the cut parent. This is illustrated in Figure 24. Because of this. as the marker attacks the levels in descending order, the disappearance of the references to the cut spawners having a level lower than the attack level allows, at the end of the treatment of the level. to kill all his cutters, and later to pick them up.

mécanisme normalIsation~atome~niv( refg :référence,
sorte~endroit : {g~cons,d~cons,liais}, rcell~endroit :référence) état~géniteur [refg] # étatgén
Si étatgén.nature = coupé alors I recherche~gén~représentant (refg) # gr
I cas sorte ~ endroit
I g~cons alors niv.gr # gauche [rcell~endroit]
I d~cons alors niv.gr # droite [rcell~endroit]
I liais alors niv.gr. # liaison [rcell~endroit]
rerg est la référence d'un géniteur. sorte~endroit et.rceil~endroit déterminent l'endroit ou le mécanisme range la référence du premier géniteur actif antérieur à celui qui a rerg pour référence. L'effet est Illustré sur la figure 25.
mechanism normalIsation ~ atom ~ niv (refg: reference,
sort ~ place: {g ~ cons, d ~ cons, liais}, rcell ~ place: reference) state ~ spawner [refg] #general
If statusgén.nature = cut then I search ~ gen ~ representative (refg) # gr
I case so ~ place
I g ~ cons then niv.gr # left [rcell ~ place]
I d ~ cons then niv.gr # right [rcell ~ place]
I liais then niv.gr. # link [rcell ~ place]
rerg is the reference of a parent. so place ~ place and.rceil ~ place determine the place where the mechanism arranges the reference of the first active parent prior to that who has rerged for reference. The effect is shown in Figure 25.

mécanisme recherche~gén~représentant ( g : référence) : référence
g # g1
m état~géniteur [g1] # étatgén
boucle tantque étatgbn.nature = coupé I m précédent [g1] # gi
I m état-géniteur [g1] - étatgén
g1 # résultat
Ce mécanisme rend la référence du premier géniteur actif dans la chaine de géniteurs qui débute par le géniteur passé en paramètre.
search mechanism ~ gen ~ representative (g: reference): reference
g # g1
m state ~ spawner [g1] # stategenerate
loop as stategbn.nature = cut I m previous [g1] # gi
I m state-parent [g1] - state
g1 # result
This mechanism makes the reference of the first active parent in the brood chain starting with the parent passed as a parameter.

mécanisme décrémentation~niveau~marquage
1 I m état~géniteur [géniteur~sommet] # étatg1
I boucle tantque étatg 1 .nature = Coupé I I m précédent [géniteur~sommet] # g1
I I m mort,# # état~géniteur [géniteur~sommet]
I I g1 - géniteur~sommet I I m état~géniteur [géniteur~sommet] # étatg1
2 marquage~génituer (géniteur-sommet)
3
I niveau~marquage - 1 # niveau-marquage
I si niveau~marquage # 0 alors
I I 31
I I I géniteur~sommet - anté~g I I I m précédent [anté~g] # géniteur~sommet
I I I recherche-gén~représentant(géniteur~sommet) # g
I I 32
I I I m g # précédent [ant-g]
I I I m g nom~1~2~3[g] # nom1,nom2,nom3
La figure 22 illustre la réorganisation d chainage des géniteurs et l'installation des registres qui définissent la nouvelle strate à marquer, lors du passage à un niveau Inférieur.
decrementation mechanism ~ level ~ marking
1 I m state ~ spawner [spawner ~ summit] # stateg1
I loop so state 1 .nature = Cut II m previous [spawn ~ top] # g1
II m dead, # # state ~ spawner [spawner ~ top]
II g1 - spawner ~ top II m state ~ spawner [spawner ~ top] # stateg1
2 marking ~ generate (genitor-vertex)
3
I level ~ marking - 1 # level-marking
I if level ~ marking # 0 then
II 31
III genitor ~ vertex - ante ~ g III m previous [ante ~ g] # genitor ~ vertex
III search-gen ~ representative (parent ~ vertex) # g
II 32
III mg # previous [ant-g]
III mg name ~ 1 ~ 2 ~ 3 [g] # name1, name2, name3
Figure 22 illustrates the reorganization of the brooding of the broodstock and the installation of the registers which define the new stratum to be marked, when passing to a lower level.

t Mise à mort des éventuels géniteurs coupés qui participent au niveau qui vient d'être marqué, jusqu'à rencontre du premier génteur actif, et marquage de ce dernier. Sur la figure. il est en C15. t Killing of potential cutters participating in the level just marked, until the first active gener is met, and marking of the latter. On the face. he is in C15.

3 Passage au niveau inférieur. A cette occasion, on peut détecter que la pile est épuisée. 3 Pass to the lower level. On this occasion, we can detect that the battery is exhausted.

31 Recherche du premier géniteur actif du niveau Inférieur. Sur la figure, il est en C 18
32 Décrochage de la chaîne des éventuels géniteurs coupés qui aboutît su géniteur actif trouve.
31 Search for the first active parent of the lower level. In the figure, it is in C 18
32 Unhooking of the chain of potential cutters that ended in the active parent found.

RAMASSAGE
mécanisme ramassage
O # ref
boucle tantque ref < référence~cellule~max
I révision~statut~cellule (ref) I ref+1 # ref
Ce mécanisme parcourt toutes ies cellules pour rendre disponibles celles qui portent encore la marque de la fournée précédente, ce qui est le signe qu'elles sont devenues inaccessibles à l'utilisateur et donc récupérables.
COLLECTION
pickup mechanism
O # ref
loop as ref <reference ~ cell ~ max
I revision ~ status ~ cell (ref) I ref + 1 # ref
This mechanism traverses all cells to make available those that still bear the mark of the previous batch, which is a sign that they have become inaccessible to the user and therefore recoverable.

MECANISMES CRITIQUES ET SYNCHRONISATIONS
Dans cette partle sont décrits les mécanismes qui accèdent aux mémoires partagées par les deux processus. Les phases critiques sont protégées par des verrous d'exclusion. déclarés sous les rubriques verrou. Les interactions se font par l'intermédIaire de conditions. déclarées sous les rubriques condition.
CRITICAL MECHANISMS AND SYNCHRONIZATIONS
In this partle are described the mechanisms that access the memories shared by the two processes. Critical phases are protected by exclusion locks. declared under locks. Interactions are through conditions. declared under the conditions condition.

MODIFICATIONS DE LA PILE DE SAUVEGARDE PAR LE PROCESSUS D'EXECUTION
registre situation~exécution : {tangent, disjoint}
verrou sauv
Le registre sItuatIon~exécutIon sert à décider entre l'abandon ou la poursuite du marquage d'une strate détruite par une coupure. Lorsque la strate en cours de marquage a été, à un moment de son marquage, de même nIveau que le géniteur courant, les processus sont dits tangents. Sinon Ils sont dits 'disjoints' Dans le cas tangent, le processus de récupération ne peut pas abandonner, sous l'effet d'une coupure. le marquage de la strate en cours.
MODIFICATIONS OF THE SAFETY STACK BY THE EXECUTION PROCESS
register situation ~ execution: {tangent, disjoint}
Saved lock
The sItuatIon ~ execIon register is used to decide between abandoning or continuing the marking of a stratum destroyed by a cut. When the stratum in the course of marking has been, at a moment of its marking, of the same level as the current parent, the processes are said to be tangent. Otherwise They are called 'disjoint' In the tangent case, the recovery process can not give up, under the effect of a break. marking of the current stratum.

En effet. dans ce cas, toutes les cellules accessibles depuis la strate sous marquage peuvent, au moment du passage à tangent, éventuellement partIciper à la désIgnatIon courante. En conséquence elles doivent toutes être marquées.Indeed. in this case, all the cells accessible from the stratum under marking can, at the time of the passage to tangent, possibly partaken to the current desIgnatIon. As a result they must all be marked.

mécanisme recalage~sur~reprise (niv~visé :niveau)
sauv
I si niv~visé # niveau~marquage alors 1
I I si niv~visé < niveau~marquage alors 11
I I I suspension récupération
I I I décrémentation~niveau~marquage recommencement récupératIon
I I 12 tangent e sItuation~exécutIon
Ce mécanisme est Illustré par la figure 26.
reset mechanism ~ on ~ recovery (level ~ target: level)
saved
I if level ~ target # level ~ then mark 1
II if level ~ referred to <level ~ marking then 11
III suspension recovery
III decrementation ~ level ~ marking recommencement recuperation
II 12 tangent and sItuation ~ execIon
This mechanism is illustrated by Figure 26.

1 Le recalage n'est effectlf que si le niveau repris est Inférieur ou égal au nIveau en cours de marquage. Dans ce cas des mesures sont à prendre pour assurer la cohérence des vlslons de la représentatIon de la part des deux processus. 1 The registration is effective only if the level taken is less than or equal to the level being marked. In this case, steps must be taken to ensure consistency in the representation of the two processes.

11 Si le niveau cible de la reprise est strictement Inférieur au nlveau sous marquage. la strate en cours de marquage est détruite pour le processus d'exécutIon. Le processus de récupératIon est forcé à abandonner le marquage en cours et à entreprendre le marquage du niveau Inférieur. 11 If the target level of recovery is strictly lower than the level under which it is tagged. the stratum being marked is destroyed for the execution process. The recovery process is forced to abandon the current marking and begin marking the lower level.

12 Dans le cas précédent ainsi que dans le cas où le nIveau clble de la reprise est simplement égal au niveau sous marquage les deux processus deviennent tangents. En effet la strate qui est maintenant marquée est dans les deux cas reprlse au titre de la désignation.  In the previous case as well as in the case where the clone level of the recovery is simply equal to the level under the marking, the two processes become tangent. In fact, the stratum which is now marked is in both cases represented under the designation.

mécanisme recalage~sur~coupure (niv~cible :niveau
sauv
si niveau~marquage > niv~cible alors i
I T suspension récupération
I cas situation~exécution I disjoint alors il
I I boucle tantque niveau~marquage # niv~cible
I I I décrémentation~niveau~marquage I I recommencement récupération
I tangent alors 12
I I géniteur~sommet # g ; m état~géniteur [g] # egg
I I I si egg.nature = actif alors vide e indic~liste~décrochée sinon sinon
I I I non~vide # indic~liste~décrochée
I I I I boucle tantque egg.nature = coupé I I I I rn coupé,niv~cible < état~géniteur [g]
I I I I I g # anté~décroché
I I I I I m précédent [g] > g ; m état~géniteur [g] # egg
I I I marquage~cell~géniteur(g) : g #
I I I boucle tantque, egg. niveau > niv~cible
I I I I
I I I I m précédent[g] # g ; m état~génigeur [g] # egg
I I I I sI -egg.nature = coupé alors
I I I I I cas indic~liste~décrochée
I I I I I vide alors
I I I I I I g + géniteur~sommet
I I I I I I non~vide # indic~ilste~décrochée
I I I I I non~vide alors m g # précédent [anté~décroché]
I I I I I boucle lantque egg.nature = coupé
I I I I I I m coupé,niv~cible # état~géniteur [g]
I I I I I I g - anté~décroché
I I I I I I m précédent [g] # g ; m êtat~géniteur [g] - egg
I I I I m g # précédent [anté~g]
I I I I marquage~cell~génlteur(g) : g # anté~g
I I I niv~cible # niveau~marquage
I I I continuation récupération
Ce mécanisme est Illustré par la figure 27.
reset mechanism ~ on ~ cutoff (level ~ target: level
saved
if level ~ marking> target level then i
IT suspension recovery
I case situation ~ execution I disjoint then he
II loops while level ~ marking # level ~ target
III decrementation ~ level ~ marking II restart recovery
I tangent then 12
II spawner ~ vertex # g; m state ~ spawner [g] # egg
III if egg.nature = active then empty e indic ~ list ~ off if not otherwise
III no ~ empty # indic ~ list ~ unhooked
IIII loop while egg.nature = cut IIII rn cut, level ~ target <state ~ spawner [g]
IIIII g # ante ~ off the hook
IIIII m previous [g]>g; m state ~ spawner [g] # egg
III labeling ~ cell ~ parent (g): g #
III loop, egg. level> level ~ target
IIII
IIII m previous [g] # g; m state ~ genius [g] # egg
IIII sI -egg.nature = cut then
IIIII case indic ~ list ~ unhooked
IIIII then empty
IIIIII g + spawner ~ top
IIIIII no ~ empty # indic ~ itte ~ unhooked
IIIII no ~ empty then mg # previous [ante ~ off the hook]
IIIII loop lantque egg.nature = cut
IIIIII m cut, level ~ target # state ~ spawner [g]
IIIIII g - ante ~ off the hook
IIIIII m previous [g] # g; mate ~ spawner [g] - egg
IIII mg # previous [ante ~ g]
IIII marking ~ cell ~ genlteur (g): g # ante ~ g
III level ~ target # level ~ marking
III continuation recovery
This mechanism is illustrated by Figure 27.

1 Des mesures sont A prendre si la coupure détruit la strate en cours de marquage et éventuellement des strates non encore marquées. 1 Measures are to be taken if the cut destroys the stratum being marked and possibly strata not yet marked.

11 Dans le cas où les processus sont dIsjoInts. le marquage en cours est abandonné et le processus de récupération est forcé à entreprendre le marquage de la strate juste Inférieure à celles détruItes par la coupure. 11 In case the processes are insignificant. the current marking is abandoned and the recovery process is forced to start marking the stratum just below those destroyed by the cut.

12 Dans le cas où les processus sont tangents. le marquage de la strate en cours ne peut pas être abandonné. Cependant pour donner au processus d'exécutIon une vislon réelle de la liste des géniteurs cohérente avec sa vision logique, les géniteurs coupés de la niveau supérieur ou égal au niveau cible de la coupure et datant d'avant le début de la fournée sont décrochés de cette liste.  12 In case the processes are tangent. marking of the current stratum can not be abandoned. However, in order to give the process of execution a real vislon of the list of parents consistent with its logical vision, the broodstock cut from the level above or equal to the target level of the cut and dating before the start of the batch are taken from this list.

SYNCHRONISATION POUR LE FONCTIONNEMENT PAR FOURNEES
registre récupération~en~attente : {vrai faux}
verrou fournée
condition proposition~fournée
mécanisme diemarrago~fournsee( g1 référence, ni ,n2,n3 nom ) ::référence
fournée
I cas récupération~en~attente
I faux alors 1 g1 - résultat
I vrai alors 2
I I 21
I I I cas fournée~courante
I I I fournée1 alors fournée2 # fournée~courante
I I I fournée2 alors fournée - fournée~courante
I I m état~géniteur [g1] # egg)
I I 22
I I I g1 # géniteur~sommet
I I I egg1,niveau # niveau~marquage
I I I ni , noml: n2 t nom2: n3 - nom3
I I 23 I I I recherche~gén~représentant (g1) # g2
I I I g2 , résultat
I 24 I I I tangent # situation~exécution
I I I recommencement récupération
1 Si le processus de récupération n'est pas en attente, le mécanisme est ineffectif.
SYNCHRONIZATION FOR OPERATION BY FURNACES
register recovery ~ in ~ expectation: {true false}
batch lock
condition proposal ~ batch
mechanism diemarrago ~ supplied (g1 reference, ni, n2, n3 name) :: reference
batch
I recovery case ~ in waiting
I wrong then 1 g1 - result
I true then 2
II 21
III case batch ~ current
III batch1 then batch2 # batch ~ current
III batch2 then batch - batch ~ current
II m state ~ spawner [g1] # egg)
II 22
III g1 # spawner ~ top
III egg1, level # level ~ marking
III ni, noml: n2 t name2: n3 - name3
II 23 III search ~ gen ~ representing (g1) # g2
III g2, result
I 24 III tangent # situation ~ execution
III restart recovery
1 If the recovery process is not pending, the mechanism is ineffective.

2 Si le processus de récupération est en attente. le démarrage d'une nouvelle fournée est effectif. 2 If the recovery process is pending. starting a new batch is effective.

21 Inversion de la marque de fournée. 21 Inversion of the batch mark.

22 InitialisatIon des registres définissant le premier niveau à marquer. 22 Initialization of the registers defining the first level to be marked.

23 La référence du géniteur actif représentant de si est rendue en résultat. 23 The reference of the active parent representing si is returned as a result.

En effet les géniteurs coupés présents dans la pile de sauvegarde au début d'une fournée seront mis à mort et les cellules qu'ils occupaient récupérées à la fln de cette fournée. Logiquement. vue du processus d'exécution, la liste des géniteurs ne comporte plus que les géniteurs actifs. La chaine d'éventuels géniteurs coupés qui appartiennent à la strate qui va subir le marquage n'est plus connue que du marqueur, par le registre géniteur~sommet. In fact, cut brooders present in the backup pile at the beginning of a batch will be put to death and the cells they occupied recovered at the end of this batch. Logically. In view of the execution process, the list of spawners only includes active spawners. The chain of potential cutters that belong to the stratum that will undergo the marking is known only from the marker, by the genitor register ~ vertex.

24 Lancement du processus de récupération au début de son mécanisme. il y a tangence car la liste des sauvegardes vues par ce processus contient des informations utiles à la représentation de la désignation par le processus d'exécution. 24 Launch the recovery process at the beginning of its mechanism. there is tangency because the list of backups seen by this process contains information useful for representing the designation by the execution process.

mécanIsme attentejournée
fournée
I vrai e récupération~en~attente
I attente proposition~fournée
GESTION DE L'ALLOCATION DES CELLULES
registre consommateur~attend~cellute : {vral
verrou alloc
condition cellule~disponible
mécanisme allocation~cellule :référence
alloc
I boucle
# # recherche~cellute # r.m # # si m # trouvé alors 12
# # # vral # consommateur~attend~cellul
# # # attente cellute~disponible
# # sinon faux # consommateur~attend~cellule : sortie
# 2 fournée~coruante 3 statut~alloc[r]
I r . résultat
recherche~cellule est un mécanisme non décrit qui permet d'obtenir la référence d'uno cellule disponible s'il en existe, ou la marque non~trouvé s'll n'en existe pas.
mechanics waiting day
batch
I true recovery ~ in waiting
I wait proposition ~ batch
CELL ALLOCATION MANAGEMENT
consumer register ~ wait ~ cellute: {vral
alloc lock
cell condition ~ available
allocation mechanism ~ cell: reference
alloc
I loop
# # search ~ cellute # rm # # if m # found then 12
# # # vral # consumer ~ wait ~ cellul
# # # waiting cellute ~ available
# # otherwise false # consumer ~ wait ~ cell: exit
# 2 batch ~ coruante 3 status ~ alloc [r]
I r. result
search ~ cell is an undescribed mechanism that allows to obtain the reference of an available cell if it exists, or the mark not ~ found if it does not exist.

12 S'll n'existe pas de cellule au statut dIsponIble. le processus d'exécution attend. Le prochain ramassage pourra le libérer de son attente.  12 If there is no cell with an unavailable status. the execution process is waiting. The next pickup can free him from his wait.

2 La cellule rendue en résultat est marquée. 2 The rendered cell is marked.

niéeanisme révlsion~statut~collulet r :référene ). Denialism revlsion ~ status ~ collulet r: referene).

alloc
# statut~alloc[r] # a # s# a # fournée~courante et a 3 disponible alors
# # restitution~cellale(a) # # disponible # statut~alloc[r]
# # si consommatour~atend~cellule = vrai alors signal collule~dispenible
restitution~cellule est un mécanisme non décrit qui met à jour la gestion du stock des cellules disponibles: il est le symétrique de rcherche~cellule.
alloc
# status ~ alloc [r] # a # s # a # batch ~ current and 3 available then
# # refund ~ cellale (a) # # available # status ~ alloc [r]
# # if consumatour ~ atend ~ cell = true then signal collule ~ dispenible
restitution ~ cell is an undescribed mechanism that updates the inventory management of available cells: it is the symmetric search cell.

mécanisme marquage~cellule( r :réiérence )
alloc fournée~courant # statut~alloc[r]
mécanisme marquage~cell~géniteur( r :référeaoe )
Ce mécanisme, analogue à marquage~celluls n'est pas décrit, pour ne pas entrer dans les détails sur la façon dont un génlieur est réparti sur plusieurs cellules.
tagging mechanism ~ cell (r: referral)
alloc batch ~ current # status ~ alloc [r]
tagging mechanism ~ cell ~ parent (r: reference)
This mechanism, similar to labeling ~ celluls is not described, not to go into details on how a genlieur is distributed over several cells.

mécanisme test~si~marquée( r :référence ) :{vral,faun}
alloc # statut~alloc[r] # a
# si a = fournée~courante alors vrai # résultat
# sinon faux # résultat
MISE EN OEUVRE A BASE DE DEUX PROCESSEURS
La machine est mise en oeuvre sur un système comportant deux processeurs:
-le "processeur d'exécution' supporte les mécanismes non critiques du processus d'exécutIon, ainsi que le processus utilisateur qui sollicite les commandes,
-le 'processeur de gestion de mémoire" supporte la totalité des mécanismes du processus de récupératlon, ainsi que les mécanismes critiques du processus d'exécution:: allocatIon~cellule, démarrage~fournée, recalagesurreprIse et recalagesurcoupuoe.
test mechanism ~ if ~ marked (r: reference): {vral, faun}
alloc # status ~ alloc [r] # a
# if a = batch ~ current then true # result
# if not false # result
IMPLEMENTATION BASED ON TWO PROCESSORS
The machine is implemented on a system comprising two processors:
the "execution processor" supports the non-critical mechanisms of the execution process, as well as the user process that solicits the commands,
the memory management processor supports all the mechanisms of the recovery process, as well as the critical mechanisms of the execution process: allocate the cell, start up the batch, readjustment and readjustment.

STRUCTURE DE LA MACHINE
L'architecture de la machine est Illustrée sur la figure 2.
STRUCTURE OF THE MACHINE
The architecture of the machine is illustrated in Figure 2.

La "mémoire princIpale" est le réservoir des cellules de mémoire allouées dynamlquement. L'accès se fait au niveau de la demi-cellule, unité dans laquelle se cadrent bien les divers types d'information à conserver. Le nombre de cellules. The "main memory" is the reservoir of dynamically allocated memory cells. Access is at the level of the half-cell, a unit in which the various types of information to be kept fit. The number of cells.

peut attendre un million. une configuration normale étant de l'ordre de 128K.can wait a million. a normal configuration being of the order of 128K.

Leur largeur est de 48 blts. Le temps d'accès à une deml-cellule est de l'ordre de 400 ns. Elle peut être construite à base de circuits 4164 de la société Intel.Their width is 48 blts. The access time to a deml-cell is of the order of 400 ns. It can be built based on 4164 circuits from Intel.

Le 'processeur d'exécution", en Interaction avec le processeur de gestion de mémoIre. Interprète les commandes du répertoIre. Pour obtenir da bonnes performances, c'est un processeur micro-programmé. Une utilisation partIculIère de la machine, par exemple pour réalIser un interpréteur PROLOG, est réalisée par l'adlonction de micro-programmes complémentaîres et de mémoires spécIalIsées, locales au processeur. Ce processeur peut être construit à l'alde de microprocesseurs en tranches de la série 2900 fournis par la socIété
Advanced MIcro Device. Le temps d'exécution d'une micro-instruction est de l'ordre de 150 ns.
The "runtime processor", in interaction with the memory management processor, interprets the commands of the directory.To obtain good performance, it is a micro-programmed processor.Particular use of the machine, for example to realize a PROLOG interpreter, is realized by the adlunction of supplemental micro-programs and special memories, local to the processor.This processor can be built with the microprocessor alde in slices of the 2900 series provided by the company.
Advanced MIcro Device. The execution time of a microinstruction is of the order of 150 ns.

Le "processeur de gestion de mémoire' assure la récupération des cellules de mémoire devenues Inaccessibles à l'utIlIsateur. Ce processeur est responsable de la gestion du statut courant d'allocation des cellules conservé dans la mémoire des statuts d'allocation, à laquelle lul-seul accède. Il traite les requêtes émises par le processeur d'exécution, Ce processeur est de même technologie que le processeur d'exécutIon. Il dispose d'une mémoire privée de 16K mots pour contenir une pile, nécessaire à sa logique de fonctionnement
La 'mémoIre des statuts d'allocatIon' comporte autant d'éléments que la mémoire principale a de cellules. Chaque élément code sur deux bits le statut d'allocation courant de la cellule qui lui correspond. Le temps d'accès à cette mémoire est de l'ordre de 100 ns. Elle pourra être construite à base de boîtiers
Am9128-10 de la société Advanced MIcro Device.
The "memory management processor" ensures the recovery of the memory cells that have become inaccessible to the user.This processor is responsible for managing the current status of allocation of the cells stored in the memory of the allocation statuses, to which -seul accesses it handles the requests issued by the execution processor, This processor is of the same technology as the execIon processor.It has a private memory of 16K words to contain a battery, necessary to its logic of operation
The 'allocation status memo' has as many elements as the main memory of cells. Each element encodes on two bits the current allocation status of the corresponding cell. The access time to this memory is of the order of 100 ns. It can be built with housings
Am9128-10 of the company Advanced MIcro Device.

Le "bus mémoire' réalise et arbitre, les accès des deux processeurs à la mémolre prlncipale. Ce mécanisme est classIque et peut être réalisé à l'aide des circuits développés par la socIété Intel pour le controle de son bus standard
MULTIBUS.
The "memory bus" realizes and arbitrates the accesses of the two processors to the main memory.This mechanism is classiC and can be realized with the help of circuits developed by the Intel company for the control of its standard bus.
MULTIBUS.

Le "bus de requêtes' assure l'échange d'information et la synchronisation entre les deux processeurs lors de certaines phases de leur activité afin que l'information contenue dans la machine reste globalement cohérente. Il consiste en quelques registres et des moyens d'échange de signaux. The "request bus" ensures the exchange of information and the synchronization between the two processors during certain phases of their activity so that the information contained in the machine remains globally coherent.It consists of some registers and means of signal exchange.

REALISATION DES SYNCHRONISATIONS
Deux dispositifs matériels permettent de réaliser les synchronisations mentionnées dans les mécanismes précédemment décrits; ce sont
- un système de requêtes mis en oeuvre grace au bus de requêtes.
REALIZING SYNCHRONIZATIONS
Two hardware devices make it possible to carry out the synchronizations mentioned in the mechanisms previously described; Those are
a system of requests implemented thanks to the request bus.

- l'accès exclusif à la mémoire des cellules mis en oeuvre par le bus mémoire. - Exclusive access to the memory of the cells implemented by the memory bus.

LE SYSTEME DE REQUETES
Le système de requêtes est un dispositif asymétrique qui permet au processeur d'exécution de forcer le processeur de gestion de mémoire à exécuter un mécanisme indiqué. Ceci permet d'une part d'accéder aux registres qui sont localisés sur le processeur de gestion de mémoire, et d'autre part assure l'exclusIon avec le processus de récupération qui est interrompu le temps de l'exécution de la requête.
THE SYSTEM OF REQUESTS
The query system is an asymmetric device that allows the execution processor to force the memory management processor to execute a specified mechanism. This allows on the one hand to access the registers that are located on the memory management processor, and on the other hand ensures the exclusion with the recovery process which is interrupted the time of execution of the request.

Le processeur d'exécution émet une requête en af-ichant sur le bus de requêtes l'identIfIcation du mécanisme à exgouter, accompagnée de ses paramètres. Le processeur d'exécution attend alors l'acquIttement de la requête, accompagné des résultats affichées sur le bus de requêtes. The execution processor sends a request by displaying on the request bus the identity of the mechanism to be exe- cuted, accompanied by its parameters. The execution processor then waits for the acquisition of the request, along with the results displayed on the request bus.

Le processeur de gestion de mémoire dispose de deux niveau; d'exécution des Instructions: le niveau "de fonda et le niveau requête'. Dourt opérations permettent de passer explicitement d'un niveau à l'autre:
-I'opération d"Invalidation" des requêtes pour passer au niveau requête.
The memory management processor has two levels; of execution of the Instructions: the level of "fonda and the level query." Operations allows to go explicitly from one level to the other:
-Invalidation operation "requests to move to the query level.

-l'opération de "validation' des requêtes pour passer au niveau do fond. -the operation of "validation" of requests to go to the bottom level.

Quand le processeur est au niveau de fond,
lors de la réception d'une requête, il sauvegarde son état de contrôle, passe automatiquement au niveau requête et exécute le mécanisme Indiqué par la requête avec les paramAtres lournis.
When the processor is at the background level,
When a request is received, it saves its check state, automatically moves to the query level, and executes the mechanism indicated by the query with the parameters that are being passed.

Quand le processeur est au niveau requête,
si une requête est reçue, elle n'est pas prise en compte immédiatement. Elle est mémorisée et sera prise en compte dès que le processeur repassera au niveau de fond.
When the processor is at the query level,
if a request is received, it is not taken into account immediately. It is memorized and will be taken into account as soon as the processor returns to the background level.

Lors du traitement d'une requête,
l'opératIon d"acquittement" débloque le processeur d'exécution en affichant les résultats sur le bus de requêtes.
When processing a request,
the acknowledgment operation "unblocks the execution processor by displaying the results on the request bus.

l'opération fin de requête" rétablît l'état de contrôle sauvegardé à la réception de la requête et fait repasser au niveau de fond,
l'opération de 'forçage détruit l'état de contrôle sauvegardé et provoque la poursuite de l'exécution en niveau de fond en un point de contrôle indiqué.
the end of request operation "restores the control state saved on receipt of the request and returns to the background level,
the forcing operation destroys the saved control state and causes the bottom level execution to continue at a specified control point.

ACCES EXCLUSIF A LA MEMOIRE
Les deux processeurs accèdent à la mémoire de façon identique. Il n'y a qu'un seul bus d'accès à la mémoire et tous les accès sont donc séquentiels. Si un processeur demande un accès pendant que le bus est Occupé à servir l'autre processeur. le premier processeur attend la fin du service en cours pour réaliser son accès. En cas de demandes simultanées, ce qui est assez probable car les deux processeurs sont finement synchrones pour des raisons de rapidIté des échanges, le système de priorité cablé favorise le processeur d'exécution.
EXCLUSIVE ACCESS TO MEMORY
Both processors access the memory identically. There is only one memory access bus and all accesses are sequential. If a processor requests access while the bus is busy serving the other processor. the first processor waits for the end of the service in progress to realize its access. In the case of simultaneous requests, which is quite likely because the two processors are finely synchronous for the sake of rapid exchange, the cable prioritization system favors the execution processor.

Le service exclusif du bus mémoire peut être demandé pour un accès élémentaire unique ou pour une séquence quelconque d'accès. Dans ce dernier cas. le premier accès de la séquence est accompagné d'un- ordre au bus mémolre de maintenir l'exclusion entre les accès ultérieurs. et le dernier accès de la séquence est accompagné d'un ordre de relacher l'exclusion après cet accès.The exclusive service of the memory bus can be requested for a single elementary access or for any access sequence. In this last case. the first access of the sequence is accompanied by a command to the memo bus to maintain the exclusion between subsequent accesses. and the last access of the sequence is accompanied by an order to release the exclusion after this access.

Pour assurer l'exclusion d'accès à la mémoire de la part du processus de récupération, le processeur de gestion de mémoire réalise automatiquement l'invalidatIon des requêtes pendant qu'il est dans une séquence d'accès exclusif à la mémoire. Pour éviter les Interblocages, le processeur d'exécution ne doit pas émettre de requête alors qu'il détient l'accès exclusif du bus mémoire, On constate que les mécanismes décrits respectent cette contrainte. To provide memory access exclusion on behalf of the recovery process, the memory management processor automatically performs the query invalidation while it is in a memory exclusive access sequence. To avoid deadlocks, the execution processor must not issue a request while it has exclusive access to the memory bus. It is noted that the described mechanisms respect this constraint.

MISE EN OEUVRE DES DIVERSES SYNCHRONISATIONS LOGIQUES
Les interactions entre le processus d'exécution et le processus de récupération ont été décrites à l'aide de dIsposItifs de synchronisation purement logiques:
- verrous d'exclusion: m, seul. attoc, fournie
- conditions d'attente: cellule~diaponib/e, propoeifion,fourn8e
- actions sur un processus: suspension, continuation. recommencement.
IMPLEMENTATION OF VARIOUS LOGICAL SYNCHRONIZATIONS
The interactions between the execution process and the recovery process were described using purely logical synchronization tools:
- exclusion locks: m, alone. attoc, provided
- waiting conditions: cell ~ diaponib / e, propoeifion, furn8e
- actions on a process: suspension, continuation. beginning.

Ces dispositifs logiques ont permis de décrire la réalisation en limitant le moins possible la dIversité des architectures matérielles possibles. Dans le cas de l'architecture présentée la tache de fond du processeur de gestion de mémoire correspond au processus de récupératIon. Les dispositifs logiques de synchronlsation sont réalisés comme suit à l'aide des dispositifs matériels dont disposent les processeurs. These logical devices made it possible to describe the realization by limiting as little as possible the difference of the possible hardware architectures. In the case of the presented architecture the background task of the memory management processor corresponds to the recovery process. Synchronization logic devices are realized as follows using the hardware devices available to the processors.

Le verrou m est directement réalisé par le maintient et le relachement de l'exclusion d'accès à la mémoire. The lock m is directly realized by maintaining and releasing the access exclusion to the memory.

Les verrous sauv, alloc et fournée sont réalisés par le sytème de requêtes. Ces verrous sont sollicites à l'occasion de certains mécanismes du processus d'exécutIon: recaIagesurreprise, recaiagesurcoupure. allocationcellule, démarragefournée. Ces mécanismes sont exécutés par requêtes sur le processeur de gestion de mémoire. Ceci permet, outre l'exclusion naturellement offerte par le système de requêtes. de profiter de la localité d'accès aux registres et à la mémoire des statuts d'allocation nécessaires à l'exécution de ces mécanismes. La pratique de ces verrous par le processus de récupération est simplement réalisée par les opérations d'invalidation et de validation des requêtes sur le processeur de gestion de mémoire.  The save, alloc, and batch locks are made by the query system. These locks are solicited during certain mechanisms of the execution process: recalibration, reworking. allocationcell, startupsupported. These mechanisms are executed by requests on the memory management processor. This allows, besides the exclusion naturally offered by the system of requests. to take advantage of the locality of access to the registers and to the memory of the statutes of allocation necessary to the execution of these mechanisms. The practice of these locks by the recovery process is simply performed by invalidating operations and validating requests on the memory management processor.

La réalisation se comporte donc comme si ces trois verrous étaient le même. The realization behaves as if these three locks were the same.

On salit que du point de vue logique on peut toujours transformer plusieurs verrous d'exclusion en un seul. Cependant. pour des raison d efficacité. il serait préférable que le verrou avec, qui est sollIcIté à chaque allocation de cellule, soit différencié. Cela serait possible avec un système de requêtes à plusieurs niveaux. le niveau le plus prioritaire étant utilisé pour les allocations de cellule.We're messy that from the logical point of view we can always turn several exclusion locks into one. However. for reasons of efficiency. it would be preferable for the lock with, which is solicited for each cell allocation, to be differentiated. This would be possible with a multi-level query system. the highest priority level being used for cell allocations.

La condition cellule~disponible est attendue par le processus d'exécution, à l'occasion du mécanisme aIlocationcellule qui est exécuté par requête sur le processeur de gestion de mémoire. Cette attente est réalisée en terminant la requête d'allocation par une simple fin de requête, sans acquittement de la requête. Le signalement de cette condition par le processus de récupération a lieu lorsqu il est en -phase de ramassage et se traduit par un acquittement retardé de cette requête. The available cell condition is expected by the execution process, on the occasion of the aIlocationcell mechanism which is executed by query on the memory management processor. This wait is achieved by terminating the allocation request with a simple end of the request, without acknowledging the request. The reporting of this condition by the recovery process takes place when it is in -phase pickup and results in a delayed acknowledgment of this request.

La condition proposition~fournée est attendue par le processus de récupération. The condition proposition ~ batch is expected by the recovery process.

Cette attente est réalisée par une boucle vide exécutée au niveau de fond sur le processeur de gestion de mémoire.This wait is performed by an empty loop executed at the background level on the memory management processor.

Les actions de suspension, continuation et recommencement ne portent que sur le processus do récupéraqtion. Elles sont causées par les mécanismes rocalage~sur~reprice et recalage~sur~coupure qui sont exécutés au niveau requête sur le processeur de gestion de mémoire. La suspension est automatiquement réalisée par la prise en compte de la requête. La cOntinuatiOn est réalisée par l'opération de fin de requête qui restaure l'état de contrôle @auvegardé au début de la requête. Le recommencement est réalisé par une o,seraiion de forçage avec pour point de contrôle le début du mécantsme do récupération,  The actions of suspension, continuation and recommencement concern only the recovery process. They are caused by the mechanisms on ~ rocage ~ on ~ reprice and registration ~ on ~ cut that are executed at the query level on the processor memory management. The suspension is automatically carried out by taking into account the request. The control is performed by the end-of-request operation that restores the backup control status at the beginning of the request. The restart is performed by a forcing session with the checkpoint as the start of recovery.

Claims (20)

Revendications.Claims. 1. Machine de traitement de l'information, destinée à recevoir un logiciel propre à l'interprétation d'un langage de programmation logique, et comprenant des moyens de traitement (10) et des moyens de mémoire vive (12) interconnectés par un bus (13), caractérisée - en ce que les moyens de mémoire vive (12) comprennent une mémoire formant pile de géniteurs, ordonnée en fonction d'un nombre entier ou niveau, et une mémoire de désignation, constituée de cellules adressables individuellement, à deux champs au moins chacune, chaque champ étant destiné à contenir une information qui est soit un atome ou donnée, soit une référence à une autre cellule, soit une référence à l'un des géniteurs, - un géniteur constituant le point de départ d'un treillis de termes, en contenant lui-même l'une au moins desdites informations, le treillis de termes pouvant se prolonger par des références successives entre cellules de la mémoire de désignation, - les cellules ainsi référencées étant soit de type constructeur, leurs champs contenant alors immédiatement chacun l'une desdites informations, soit de type variable, étant mises en attente d'une liaison ultérieure, lors de laquelle les deux champs d'une cellule serviront l'un à associer la variable à l'un des géniteurs, et l'autre à contenir l'une desdites informations, et - en ce que les moyens de traitement (10) comprennent un processeur d'exécution microprogrammé (10) susceptible d'etre associé directement ou indirectement à un organe programmable destiné à recevoir le logiciel d'interprétation, ce proces seur d'exécution comprenant en outre un registre de géniteur courant, qui fait référence à l'un des géniteurs de la méi moire formant pile, l'état courant de la machine étant ainsi défini par le contenu de ce registre ainsi que par le contenu de la mémoire de désignation et de la mémoire formant pile de géniteurs.An information processing machine, intended to receive a software specific to the interpretation of a logic programming language, and comprising processing means (10) and random access memory means (12) interconnected by a bus. (13), characterized in that the random access memory means (12) comprises a memory forming a stack of parents, ordered according to an integer or level, and a designation memory, consisting of individually addressable cells, two fields at least each, each field being intended to contain information which is either an atom or datum, a reference to another cell, or a reference to one of the parents, - a parent constituting the starting point of a lattice of terms, containing itself at least one of said information, the lattice of terms being able to be extended by successive references between cells of the designation memory, - the cells thus r ferencées are either of type constructor, their fields then immediately each containing one of said information, or variable type, being put on hold for a subsequent connection, during which the two fields of a cell will serve one to associate the variable to one of the brooders, and the other to contain one of said information, and - in that the processing means (10) comprise a microprogrammed execution processor (10) that can be associated directly or indirectly to a programmable organ for receiving the interpretation software, this execution process further comprising a current parent register, which refers to one of the parents of the stack memory, the current state of the machine being thus defined by the contents of this register as well as by the contents of the designation memory and the memory forming the parent stack. 2. Machine selon la revendication 1, caractérisée en ce que le processeur d ' exécution (10) est microprogrammé avec un jeu d'instructions comprenant - la construction d'un terme à partir de deux autres, - la création d'une variable, - la substitution d'un terme 8 une variable, - l'accès à la partie droite d'un terme construit; - 3. 'acce's à la parti gauche d'un terme construit, - des tests pour de terminer Si un terme est un atome, un 2. Machine according to claim 1, characterized in that the execution processor (10) is microprogrammed with a set of instructions comprising - the construction of a term from two others, - the creation of a variable, - the substitution of a term 8 a variable, - the access to the right part of a constructed term; - 3. 'access to the left party of a constructed term, - tests to finish If a term is an atom, a terme construit ou une variable, - la comparaison de deux termes autres que construits, - la sauvegarde d'un terme, la reprise d'un terme, et - 1' initialisation constructed term or a variable, - the comparison of two terms other than constructed, - the saving of a term, the recovery of a term, and - 1 initialization 3.Machine selon la revendication 2, caractérisée en ce que le processeur d'exécution (10) est microprogrammé pour effectuer aussi les instructions suivantes - obtenir le niveau courant, - exécuter une coupure.3.Machine according to claim 2, characterized in that the execution processor (10) is microprogrammed to also perform the following instructions - get the current level, - perform a cut. 4. Machine selon l'une des revendications 1 à 3, caractérisée en ce que, dans la mémoire de désignation (14), une cellule de type constructeur comporte un champ de gauche et un champ de droite, utilisés de la meme manière, et comprenant chacun une zone d'indicateur et une zone dtin- formation, cette dernière étant propre à contenir une information de l'un des types précités, tandis que la zone dindi- cateur associée précise s'il s'agit d'un atome,d'une référence à une cellule-constructeur, d'une référence à une cellule-variable ou d'une référence à un géniteur, une cellule de type variable comporte une zone de statut de liaison, propre à contenir 'libre' tant que la variable demeure libre, ou 'indécis' lorsque la variable est devenue liée, une zone de référence à un géniteur associé, et une zone de liaison propre à définir une liaison de cette variable, en recevant une information de l'un des types précités ainsi qu'une indication correspondante, comme définie cidessus.4. Machine according to one of claims 1 to 3, characterized in that, in the designation memory (14), a manufacturer-type cell comprises a left field and a right field, used in the same way, and each comprising an indicator zone and a data zone, the latter being able to contain information of one of the aforementioned types, while the associated indicator zone indicates whether it is an atom, a reference to a cell-constructor, a reference to a variable-cell or a reference to a parent, a variable-type cell has a link status zone, which can contain 'free' as long as the variable remains free, or 'undecided' when the variable has become linked, a reference area to an associated parent, and a binding area to define a binding of this variable, by receiving information from one of the aforementioned types as well as that a corresponding indication, co defined above. 5. Machine selon l'une des revendications 1 à 4, caractérisée en ce que la mémoire formant pile de géniteurs (14) est agencée pour permettre trois formats différents quant aux éléments de la pile, ces trois formats comprenant tous un champ 'nature' en tête, avec pour un format dit géniteur actif', un champ 'nature' contenant la marque 'actif', un champ 'niveau' qui contient un nombre entier, un champ 'précédent' qui contient une référence à un autre géniteur défini par son rang et au moins un champ 'nom' qui contient un nom, qui contient l'une desdites informations, pour un format dit 'géniteur coupé', le champ 'nature' qui contient la marque 'coupé', ainsi qu'un champ 'niveau' et un champ 'précédent' définis comme pour un géniteur actif, et pour un format dit 'géniteur mort, le seul champ 'nature' qui contient la marque 'mort'. 5. Machine according to one of claims 1 to 4, characterized in that the spawning stack memory (14) is arranged to allow three different formats as to the elements of the stack, these three formats all including a field 'nature' in the lead, with a 'nature' field containing the 'active' mark, a 'level' field which contains an integer, a 'previous' field which contains a reference to another its rank and at least one field 'name' which contains a name, which contains one of said information, for a format called 'cut off parent', the field 'nature' which contains the mark 'cut', and a field 'level' and a 'previous' field defined as for an active parent, and for a so-called 'dead parent' format, the only 'nature' field that contains the 'dead' mark. 6. Machine selon l'une des revendications 1 à 5, caractérisée en ce que la mémoire formant pile de géniteurs (14) est construite à partir de cellules de taille identique à celle de la mémoire de désignation, les formats 'géniteur coupé' et 'géniteur mort' occupant une seule cellule de mémoire, tandis que le format 'géniteur actif' est obtenu par enchainement de plusieurs cellules de mémoire.6. Machine according to one of claims 1 to 5, characterized in that the spawning stack memory (14) is constructed from cells of size identical to that of the designation memory, the formats 'spawner cut' and 'dead parent' occupying a single memory cell, while the 'active parent' format is obtained by chaining together several memory cells. 7. Machine selon la revendication 6, caractérisée en ce que les cellules de la mémoire vive comprennent deux parties de 24 bits chacune, séparables chacune en un champ de 4 bits et un champ de 20 bits.7. Machine according to claim 6, characterized in that the cells of the random access memory comprise two portions of 24 bits each, each separable into a 4-bit field and a 20-bit field. 8. Machine selon l'une des revendications 1 à 7, caractérisée en ce que le processeur d'exécution (10) est microprogrammé avec une instruction 'réduire', destinée à permettre la récupération, dans les moyens de mémoire vive, des parties de celleci qui contiennent des informations devenues inutiles.8. Machine according to one of claims 1 to 7, characterized in that the execution processor (10) is microprogrammed with a 'reduce' instruction, intended to allow the recovery, in the RAM means, parts of this contains information that has become useless. 9. Machine selon la revendication 8, caractérisée en ce que les moyens de traitement sont aussi agencés pourra'une part répondre à des demandes d'allocation de cellules-de mémoire, en allouant des cellules de mémoire disponibles, et d'autre part répondre à une demande spécifique consécutive à la commande 'réduire' en effectuant une récupération automatique des cellules contenant des informations devenues inutiles. 9. Machine according to claim 8, characterized in that the processing means are also arranged may partly meet memory-cell allocation requests, allocating available memory cells, and secondly respond to to a specific request following the command 'reduce' by performing an automatic recovery of cells containing information that has become useless. 10. Machine selon la revendication 9, caractérisée en ce que les moyens de traitement comprennent un processeur de gestion de mémoire (12) séparé qui possède un registre 'attente cellule', propre à contenir une marque 'vrai' ou 'faux', et un registre 'situation de l'exécuteur' qui contient l'une des deux marques 'tangent' ou 'disjoint' suivant l'état du processeur d'exécution relativement au processeur de gestion de mémoire, les deux processeurs dialoguant par requêtes, et en ce que la machine comporte un mécanisme d'accès exclusif à la mémoire permettant une exclusion mutuelle entre les deux processeurs.Machine according to claim 9, characterized in that the processing means comprise a separate memory management processor (12) which has a 'wait cell' register, able to contain a 'true' or 'false' mark, and an 'executor status' register which contains one of the two marks 'tangent' or 'disjoint' according to the state of the execution processor relative to the memory management processor, the two processors interacting by requests, and the machine has an exclusive access mechanism to the memory allowing mutual exclusion between the two processors. 11. Machine selon l'une des revendications 9 et 10, caractérisée en ce que les moyens de traitement (32) effectuent la récupération automatique de la manière suivante - exploration d'une partie au moins des treillis de cellules définis par le contenu des moyens de mémoire vive, et utiles au processseur d'exécution, en y marquant les cellules en fonction de conditions prédéterminées, - et ensuite ramassage des cellules non marquées, qui sont maintenant considérées comme libres.11. Machine according to one of claims 9 and 10, characterized in that the processing means (32) perform the automatic recovery in the following manner - scanning at least part of the cell lattice defined by the content of the means RAM memory, and useful to the execution processor, by marking the cells according to predetermined conditions, - and then picking up unmarked cells, which are now considered free. 12. Machine selon la revendication 11, caractérisée en ce qu'une mémoire de statuts d'allocation (15) est associée au processeur de gestion de mémoire (12), cette mémoire de statuts d'allocation (15) comprenant un nombre d'éléments au moins égal à celui des cellules de la mémoire de désignation (14), chacun de ces éléments étant susceptible d'états différents comprenant un état libre, et un état marqué au moins, en ce que le processeur de gestion de mémoire (12) effectue le marquage des cellules de la mémoire (14) par une inscription dans l'élément correspondant de cette mémoire de statuts d'allocation, et en ce que le processeur de gestion de mémoire (12) effectue le ramassage par une exploration complète de cette mémoire de statuts d'allocation (lus), tout en faisant passer ses éléments non marqués à l'état libre. Machine according to claim 11, characterized in that an allocation status memory (15) is associated with the memory management processor (12), said allocation status memory (15) comprising a number of elements at least equal to that of the cells of the designation memory (14), each of these elements being capable of different states comprising a free state, and a marked state at least, in that the memory management processor (12) ) performs the marking of the cells of the memory (14) by an inscription in the corresponding element of this allocation status memory, and in that the memory management processor (12) performs the collection by a complete scan of this allocation status memory (read), while passing its unmarked elements to the free state. 13. Machine selon la revendication 12, caractérisée en ce que chaque élément de la mémoire de statuts d'allocation (15) comporte trois états différents, c'est-à-dire l'état libre, ainsi qu'un premier et un second états non libres, définissant respectivement l'affectation de la cellule correspondante des moyens de mémoire vive dans une première et une seconde fournées, et en ce que le processeur de gestion de mémoire (12) effectue alternativement la récupération de mémoires sur les cellules de la première. et de la seconde fournées, le marquage consistant à inverser l'affectation de fournée des cellules, on inversant l'état non libre de L'éLément associé dans la mémoire de statuts d'allocation, et le ramassage consistant à faire passer à l'état libre les éléments de la mémoire de statuts d'allocation qui ont conservé la marque qu'elles avaient au début de cette fournée.13. Machine according to claim 12, characterized in that each element of the allocation status memory (15) comprises three different states, that is to say the free state, and a first and a second non-free states, respectively defining the assignment of the corresponding cell of the random access memory means in a first and a second batch, and in that the memory management processor (12) alternately performs the memory recovery on the cells of the memory. first. and the second batch, the marking of inverting the batch assignment of the cells, reversing the non-free state of the associated element in the allocation status memory, and the collection of free state the elements of the allocation status memory that have retained the mark they had at the beginning of this batch. 14. Machine selon la revendication 13, caractérisée en ce que la mémoire de statuts d'allocation (15) comporte, en correspondance bi-univoque, autant d'éléments qu'il y a de cellules dans les moyens de mémoire vive.14. Machine according to claim 13, characterized in that the allocation status memory (15) comprises, in one-to-one correspondence, as many elements as there are cells in the RAM means. 15. Machine selon la revendication 14, caractérisée en ce que le processeur de gestion de mémoire possède en outre les registres suivants j géniteur sommet' qui contient une 'référence', 'fournée courante' qui contient une des deux marques 'allouée15. Machine according to claim 14, characterized in that the memory management processor further has the following registers j parent vertex 'which contains a' reference ',' current batch 'which contains one of the two marks' allocated première fournée' ou 'allouée seconde fournée', 'niveau sous marquage' qui contient un nombre entier, 'nom sous marquage' qui contient au moins un nom, et en ce que le processeur de gestion est propre à répondre à une requête 'démarrer une fournée' émanant du processeur d'exécution à la suite d'une instruction 'réduire', ladite requête étant accompagnée de la référence d'un 'géniteur' et de celle d'au moins un 'nom', représentant l'état courant du.processeur d'exécution, en effectuant les opérations suivantes - ranger la référence de ce géniteur dans le registre 'géniteur sommet', - inverser la marque contenue dans le registre 'fournée courante', - ranger le niveau du nouveau 'géniteur sommet' dans le registre 'niveau sous marquage', - ranger le nom dans le registre 'nom sous marquage', - puis en procédant au marquage du terme défini par le registre 'nom sous marquage', ledit marquage concernant, pour un terme construit, non seulement la cellule 'constructeur' de ce terme, mais aussi les cellules désignées par celle-ci, répétitivement s'il s'agit à nouveau de termes construits. first batch 'or' allocated second batch ',' level under marking 'which contains an integer,' name under marking 'which contains at least one name, and in that the management processor is able to respond to a' start 'request a batch 'emanating from the execution processor following a' reduce 'instruction, said request being accompanied by the reference of a' parent 'and that of at least one' name ', representing the current state From the runtime processor, by doing the following operations - put the reference of this spawner in the register 'spawner vertex', - invert the mark contained in the register 'current batch', - arrange the level of the new 'spawner vertex' in the register 'level under marking', - put the name in the register 'name under marking', - then by marking the term defined by the register 'name under marking', said marking concerning, for a built term, no only the cell 'constr of the term, but also the cells designated by it, repetitively if it is again constructed terms. 16. Machine selon l'une des revendications 13 à 15, caractérisée en ce que ledit marquage comporte, pour une cellule du genre variable liée, une normalisation de la liaison,avec:16. Machine according to one of claims 13 to 15, characterized in that said marking comprises, for a cell of the linked variable genus, a normalization of the link, with: - un test pour déterminer si la variable est libre ou si le - a test to determine if the variable is free or if the géniteur de la variable est mort, auquel cas la variable est sender of the variable is dead, in which case the variable is mise au statut 'libre', et le résultat de la normalisation 'free' status, and the result of standardization est 'libre', is free', - sinon, le remplacement du géniteur de la variable par son - otherwise, replacing the parent of the variable by its géniteur représentant, la comparaison du niveau de ce géni breeder representing, the comparison of this geni's level teur représentant maintenant associé à cette variable au representative now associated with this variable at contenu du registre 'niveau sous marquage', content of the 'level under marking' register, en cas de supérioriorité du premier, la normalisation de la liaison de la variable à 'libre'. in case of superiority of the first, the normalization of the binding of the variable to 'free'. en cas d'infériorité ou d'égalité, la normalisation de la liaison de la variable à 'liée' et la réitération du marquage avec le résultat de la liaison ainsi normalisée de la variable. in case of inferiority or equality, the normalization of the binding of the variable to 'linked' and the reiteration of the marking with the result of the thus standardized linkage of the variable. 17. Machine selon la revendication 16, caractérisée en ce Machine according to claim 16, characterized in that que la recherche du géniteur représentant comprend that the search for the parent representative includes la recherche du premier géniteur actif rencontré à partir looking for the first active spawner encountered from du champ 'précédent' du géniteur en cours d'examen, le géni from the 'previous' field of the parent being examined, the geni teur représentant étant ce géniteur actif. representative being that active parent. 18. Machine selon l'une des revendications 13 à 17, caracté 18. Machine according to one of claims 13 to 17, characterized risée en ce qu'après achèvement des marquages précités, les that after the completion of the markings referred to above, the moyens de traitement (12) produisent processing means (12) produce - une exploration de la pile des géniteurs à partir du géni - an exploration of the pile of genitors from the geni teur sommet, .jusqu'au premier géniteur actif, en transformant to the first active parent, by transforming en géniteurs morts les géniteurs coupés rencontrés en cours dead spawners cut off spawners encountered in progress de route, et un marquage dudit premier géniteur actif route, and a marking of said first active parent rencontré, lequel est maintenant réservé, met, which is now reserved, - l'inscription de ce champ 'précédent' dans le registre - the inscription of this field 'previous' in the register 'géniteur sommet', en remplacement du contenu antérieur de 'vertex breeder', replacing the previous content of celui-ci, this one, - la continuation de l'exploration de la pile des géniteurs - continued exploration of the spawning pile jusqu'au second géniteur actif, représentant le nouveau to the second active parent, representing the new géniteur sommet, breeder summit, - l'inscription de la référence du géniteur représentant ,dans le champ 'précédent' du premier géniteur actif qui vient - the inscription of the reference of the parent representing, in the 'preceding' field of the first active parent who comes d'être marqué, et to be marked, and - l'inscription de son ou ses champs 'nom' dans le registre - the inscription of his or her fields 'name' in the register 'nom sous marquage'.  'name under marking'. 19. Machine selon l'une des revendications 13 à 18, caractérisée en ce qu'en présence d'une requête d'allocation de cellules lors du ramassage, le processeur de gestion de mémoire (12) alloue une cellule ayant conservé la marque de la fournée en cours, tout en inversant cette marque, au lieu de faire passer cette cellule à l'état libre.19. Machine according to one of claims 13 to 18, characterized in that in the presence of a cell allocation request during pickup, the memory management processor (12) allocates a cell having retained the mark of the current batch, while reversing this mark, instead of moving this cell to the free state. 20. Machine selon l'une des revendications 11 à 19, caractérisée en ce que le quatrième état de la mémoire des statuts d'allocation (15) identifie des cellules non soumises à l'action du processeur de gestion de mémoire (12). 20. Machine according to one of claims 11 to 19, characterized in that the fourth state of the allocation status memory (15) identifies cells not subject to the action of the memory management processor (12).
FR8400604A 1984-01-16 1984-01-16 INFORMATION PROCESSING MACHINE FOR THE INTERPRETATION OF LOGIC PROGRAMMING LANGUAGES Expired FR2559286B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR8400604A FR2559286B1 (en) 1984-01-16 1984-01-16 INFORMATION PROCESSING MACHINE FOR THE INTERPRETATION OF LOGIC PROGRAMMING LANGUAGES

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR8400604A FR2559286B1 (en) 1984-01-16 1984-01-16 INFORMATION PROCESSING MACHINE FOR THE INTERPRETATION OF LOGIC PROGRAMMING LANGUAGES

Publications (2)

Publication Number Publication Date
FR2559286A1 true FR2559286A1 (en) 1985-08-09
FR2559286B1 FR2559286B1 (en) 1987-03-27

Family

ID=9300152

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8400604A Expired FR2559286B1 (en) 1984-01-16 1984-01-16 INFORMATION PROCESSING MACHINE FOR THE INTERPRETATION OF LOGIC PROGRAMMING LANGUAGES

Country Status (1)

Country Link
FR (1) FR2559286B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0378195A2 (en) * 1989-01-10 1990-07-18 Kabushiki Kaisha Toshiba Buffer device suitable for asynchronous transfer mode communication

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
COMPUTER, vol. 14, no. 7, juillet 1981, pages 10-21, Long Beach, C.A., US; G.J. SUSSMAN et al.: "Scheme-79 - Lisp on a chip" *
ELECTRONICS INTERNATIONAL, vol. 56, no. 15, juillet 1983, pages 101-102, New York, US; C. COHEN: "Fifth-generation hardware takes shape" *
MICROPROCESSING AND MICROPROGRAMMING, vol. 12, no. 1, août 1983, pages 9-14, Amsterdam, NL; E. VON PUTTKAMER: "A microprogrammed Lisp machine" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0378195A2 (en) * 1989-01-10 1990-07-18 Kabushiki Kaisha Toshiba Buffer device suitable for asynchronous transfer mode communication
EP0378195A3 (en) * 1989-01-10 1992-03-18 Kabushiki Kaisha Toshiba Buffer device suitable for asynchronous transfer mode communication

Also Published As

Publication number Publication date
FR2559286B1 (en) 1987-03-27

Similar Documents

Publication Publication Date Title
FR2608807A1 (en) MULTIPROCESSOR SYSTEM AND LOAD BALANCING METHOD FOR SAID SYSTEM
BE1001068A4 (en) Method file quick opening disc identified by the name of roads.
CN102197365B (en) Atomic multiple modification of data in distributed storage system
WO2005045698A2 (en) Method of producing a current view from at least one variable source information object in a computer environment
EP1290554B1 (en) Modular computer system and related method
FR2677472A1 (en) CONTROL UNIT FOR MEMORY SECOND LEVEL CACHE.
CN110532098A (en) The GPU method and system of service are provided
FR2664719A1 (en) CONTROL DEVICE FOR A RECONFIGURABLE PARTITIONING BUFFER MEMORY.
Nogueira et al. A CPU-GPU local search heuristic for the maximum weight clique problem on massive graphs
CA2596290C (en) Method and system for maintaining consistency of a cache memory by multiple independent processes
FR3055992A1 (en) INDEX MANAGEMENT IN A FLASH MEMORY
WO2000063759A2 (en) Method for controlling a decision-making process in pursuit of an objective in a specific field of application, such as economic, technical, organisational or the like and implementing system
EP0228329B1 (en) Electronic device constituting high-speed stable memory
FR2559286A1 (en) Information processing machine for interpretation of logic programming languages
EP1175122A1 (en) Memory management apparatus allowing the writing of data blocks by subsititution
EP2530586B1 (en) Method for generating software
FR2782820A1 (en) Image processing technique for assembling page data for printing uses management technique allowing re-organization of data in memory without awaiting completion of page printing
US20220076102A1 (en) Method and apparatus for managing neural network models
FR3050848A1 (en) SERVER ARCHITECTURE AND DATA REDISTRIBUTION METHOD FOR DISTRIBUTION OF A VERSIONED GRAPH.
FR3084178A1 (en) DIRECT ACCESS IN MEMORY
FR3073061B1 (en) PROCESS COMMUNICATION METHOD, COMPUTER PROGRAM AND CORRESPONDING COMPUTER INSTALLATION
US20240086188A1 (en) Automatic navigation between reference architecture and code repository
EP2860630A1 (en) Data transfer method in a dynamic environment
EP1493083B1 (en) Reconfigurable control system based on hardware implementation of petri graphs
EP3489834A1 (en) Computer system, method for accessing a computer file and corresponding computer program

Legal Events

Date Code Title Description
ST Notification of lapse