gem-graph-client/docs/rtfm/gem-graph.texi
Jean Sirmai 2466ed1ddc
docs/rtfm/gem-graph.texi WIP: manual structure and redaction
The chapters: Intro, Gem-graph by example and Theory are the more developped.
The other chapters are just drafts.
2024-12-11 15:43:47 +01:00

1317 lines
61 KiB
Text

\input texinfo
@c https://www.gnu.org/software/texinfo/manual/texinfo/texinfo.pdf
@c @paragraphindent 0
@c @fonttextsize 10 (instead of 11) enable to see the intro in one page.
@c from: Appendix B Tips and Hints p 242:
@c "Write in the present tense, not in the past or the future."
@c "Write actively! For example, write “We recommend that . . .”
@c rather than “It is recommended that . . . ”.
@c "Use 70 or 72 as your fill column. Longer lines are hard to read." <<<
@c "Include a copyright notice and copying permissions."
@c "Design your manual so that it can be read sequentially, as far as possible."
@setfilename gem-graph.texinfo
@settitle Gem-Graph manual
@copying
Copyright @copyright{} 2024 Jean 'jean' Sirmai
@sp 1
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled
``GNU Free Documentation License''.
@end quotation
@end copying
@defindex au
@defindex gl
@titlepage
@title Gem-Graph Manual 1.0
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents
@node Root
@c (version @value{VERSION}, @value{UPDATED}).
@node Introduction
@chapter Introduction
@cindex Introduction
Welcome to Gem-graph!
@sp 1
@glindex Automaton
Gem-graph lets you move and transform drawn objects using an automaton.
It's a tool for describing the evolution of situations through drawing.
It allows you to conceive and apply rules that create new drawings from
the previous ones. Your design is no longer frozen: you can decide how you
want it to evolve! You can use gem-graph to make a game. You can use it to
tell a story. You can use it to make a model of a phenomenon that interests
you. You can represent any scene simply or in more realistic detail.
Simple parts and more detailed parts can coexist in the same design and
you can do it in two or three dimensions. You can watch what you've created
evolve without intervening, or guide it by modifying your initial rules
towards what you want to achieve. You can even mix several drawings and
animations. Finally, you can observe them in detail and modify them and go
back and start again and measure or compare and keep the sequences and
other results that interest you so that you can play them again.
@sp 1
@glindex Gem-graph principles
@glindex Gem-graph design
@glindex Gem-graph rules
@glindex Gem-graph drawings
However, a certain amount of effort will be required to achieve this.
A complex model will require more work than a simpler one, but it is
possible to start with something quite simple and develop it step by step.
In any case, you have to draw what you want to see and say how you want it
to be transformed. Gem-graph cannot do that for you. However, it does
provide powerful tools to help you. Gem-graph - short for 'geometric graph' -
is a redrawing system. Its strength lies in the fact that it deals only
with very simple drawing elements, all of which are similar. All the static
information - your initial drawing - is an arrangement of these elements
in space. All the dynamic information - your redrawing rules - transform
what you draw as you wish. All gem-graph rules, whatever their complexity,
are only associations of an unique simple pattern: one condition on one
element of the drawing triggers one action on the same element.
Due to this very simple structure, any set of complex rules, no matter
how many there are, can always be processed automatically by the gem-graph
automaton. The tools provided by gem-graph give you access to this power
to create and animate your drawings, and this manual is here to help you
learn how to master them.
@sp 1
@glindex Hello world
@glindex Gem-graph by example
@anchor {intro_very_simple_examples} Reproducing very simple examples,
such as when a programming language asks you to write "Hello world",
is one way of learning. For gem-graph, the equivalent of "Hello world"
will be to move a small line on your screen. This example and other simple
ones that follow will progressively give you an approach of what gem-graph
can do and enable you to build and animate much more complex drawings that
suit your desires. If you like learning this way
@pxref {node_gem_graph_by_example,, Hello world, Gem-graph by example}.
@sp 0
If you prefer to learn by reading what the commands you see on the screen
are doing, they have been detailed in the
@ref {gem_graph_commands,, commands, Gem-graph commands}.
@sp 0
The table of contents is another way to learn. It goes from the simplest
to the most advanced topics: How to set up a simple model, observe it,
measure what it does and display the results, then transform it by changing
what you see and how it reacts. You can directly deal in with the details
of gem-graph mechanism itself. You may also whish to compare gem-graph to
other classes of automata that do quite similar things and examine what
it can and cannot actually do and what its scope of application is.
@sp 0
Finally, you might like to get a taste of the theory behind it all
straight away.
In short: there exists a minimal form for geometric graphs rewriting.
There is no simpler way of drawing than to combine several occurrences
of the same symbol in a space made up of a single type of spatial unit.
This deep simplicity makes the strength of gem-graph.
@sp 0
George Boole once established the bases of the simplest algebra.
Explore now a path to the simplest geometry by rewriting geometric graphs!
@node gem_graph_by_example
@chapter Gem-graph by example
@cindex Gem-graph by example
@cindex Automaton
@glindex Gem-graph by example
@section Hello world
@cindex Hello world
@glindex Hello world
@anchor {hello_world} Our "Hello world" is the simplest program that gem-graph
can execute. It consists of a single short arrow, which moves in a straight line
in a single direction. To do this, we first had to draw this little arrow and
then make it move. The result is certainly not very exciting, but this example
is enough to show how a gem-graph drawing is made and how it is animated. One
rule and one state are enough. The rule only says: if an arrow is drawn here,
I erase it and redraw it on the next square. For the moment, you can ignore how
the automaton works (the details are in _gem_graph_mechanism).
The model is assumed to evolve in a small flat space which is described here
(_hello_world_space). All gem-graph needs to know to execute such model is
written in the "Hello world" file (_hello_world_file). Note that all gem_graph
models will have basically the same structure, making them easy to copy and
share. How to execute this example is explained here (_hello_world_exec).
To go back to the Introduction:
@ref {intro_very_simple_examples, ???, Reproducing simple examples}
@sp 1
@section Random walk
@cindex Random walk
@glindex Random walk
@anchor {random_walk} From this first model, it is possible to give the arrow
the possibility of moving in two directions: forwards or backwards, and to ensure
that these movements occur randomly. This second model therefore describes a
"random walk". To do this, we need to add a second rule which only says: if an
arrow is drawn here, I erase it and redraw it on the previous square. It is then
necessary to determine randomly whether the first or second rule applies. With
these two rules and this random choice, the arrow now sometimes advances and
sometimes retreats. The detailed description is here: (_random_walk).
@sp 1
@section Multiple random walks
@cindex Random walks (multiple)
@glindex Random walks (multiple)
@anchor {multiple_random_walks} The next example shows how these two rules can
be applied to several states. To test this, we start by populating the space by
randomly distributing in it a large number of arrows, all with the same
orientation.
We now need to adapt our rules by checking that the square where an arrow can go
is free. If not, the arrow will not be moved. Once the rules have been modified
in this way, they can be applied to any arrow in the space. When you set the
model in motion, you will see all these small lines moving at random towards
left or right (_horizontal_random_walks). This shows that the gem-graph
automaton is constantly exploring the whole space to see where the rules you
designed can be applied.
@sp 0
By adapting this example, it's easy to create another model where the arrows
are vertical and move randomly from bottom to top or top to bottom
(_vertical_random_walks).
@sp 1
@section Pendulum
@cindex Pendulum
@glindex Pendulum
@glindex Pendulum synchronization
@anchor {pendulum} In the previous random walk models all states were similar
(one arrow) even if there were many of them and there were only two rules
(forward/backward). Now here's a model with two states and two rules:
the "pendulum" (_pendulum). This time, the arrow can be drawn either tilted
forwards or tilted backwards and the two rules switch the drawn arrow from
one state to the other or vice versa. The pendulum location does not change.
It only moves from left to right and vice versa. You can slow down the program
to observe the movements better (_gem_graph_commands). It could be a good
starting point to draw a complete clock or a solar system.
@sp 1
@section Models addition
@cindex Models addition
@glindex Models addition
@glindex Random walks plus pendulum model
@glindex Pendulum model plus random walks
@anchor {random_walks_plus_pendulum}
An amazing feature of gem-graph is that it is possible to add the three
previous models and make them work together (_random_walks_plus_pendulum).
Their addition is immediate because these three models are @strong {independent}.
If they were not, i.e. if a rule in one applied to a state in another,
you would have to change it or slightly modify one of the states.
Gem-graph can't do this for you, but it can detect such situations and
provide you with tools that automate or at least facilitate the merging
operation (_gem_graph_addition).
@sp 1
Once the addition automatically operated, you can see little lines moving
simultaneously and at random from left to right or vice versa if they are
horizontal, and from top to bottom or vice versa if they are vertical. Their
number is constant. They don't change shape or direction. There seems to be no
accident when they cross. The pendulum is here also, who continues to come and
go, oblivious to all the commotion.
Nothing else happens (_random_walks_plus_pendulum).
Although the system is constantly changing, something always seems to remain
the same (@strong {ergodicity}, ergodic_hypothesis).
@sp 1
@glindex Clocks synchronization model
@glindex Modelling clocks synchronization
@glindex Causal relations modelling
@glindex Modelling causal relations
We could have drawn several independent clocks but they would have be
asynchronous. This is because the automaton randomly selects the targets to
which it applies the rules. It is quite possible to synchronize these clocks
by establishing between them drawn links able to transmit proper signals.
This way of doing has a cost but it enables you to let some events independent
while you can control @strong {causal relations} on some others (_randomization).
@sp 1
@sp 1
@section Addressing complexity
@cindex Complexity
@glindex Complex systems models
@glindex Modelling complex systems
This resulting model, because it shows a multitude of diverse and simultaneous
movements, perhaps gives the impression of a more complex system. It would be
easy to make it even more complex, by trying to represent, for example, the
traffic of a city in all its diversity, a video game or the metabolism of a
cell, but the value of the gem-graph is the way in which it can be used to
analyse and @strong {control} this complexity.
@sp 0
It is the profound simplicity of the gem-graph automaton that allows it to
embrace such a wide range of situations and behaviours simultaneously.
(link > Canonical form)
At this point, it's time to take a look at the mechanism (_gem_graph_mechanism)
and theory (_gem_graph_theory) of gem-graph and compare gem-graph to other
classes of automata that do similar things to understand what its scope is
(_spatial_automata_classification).
@node gem_graph_commands
@chapter Gem-graph Commands
@cindex Commands
@glindex Gem-graph commands
@glindex Commands
@anchor {commands} Gem-graph opens with an overview that lets you see at a glance
the current state of your model, the rules at your disposal and some measurement
results if you have selected any.
@ref {intro_very_simple_examples, ???, back to Introduction}
@sp 1
A panel contains all the commands you need to see how the model behaves in
motion: run/stop, slow down/speed up, step by step, do/undo/redo.
@sp 1
Another group of controls - the 'camera' panel - lets you rotate or zoom in your
model to view it from the best angle.
@sp 1
Gem-graph opens in "run" mode. The only other mode available is "edit" mode.
These two modes are incompatible: you can either run the model or edit it, but
not both at the same time. The command for switching from one state to the other
is at the top left of the title bar.
@sp 1
Other more specific commands can only appear if you have first defined objects
or situations that are of particular interest to you in your model. You can then
colour them in or change their relative transparency so that you can see them
clearly.
@sp 1
From the overview panel, you can move to the state, rules, measurements or
results panels. Only one of these panels/screens is visible at a time. The
buttons that allow you to move from one to the other are in the left-hand title
bar, just next to the exec/edit button, which is furthest to the left.
@sp 1
Some commands enable you to check the performances of the model and of the
automaton and to tune some parameters that could improve them.
@sp 1
@section State panel
@cindex State panel
@glindex Gem-graph Run mode/Edit mode
@glindex Run mode/Edit mode
@anchor {state_panel} The state panel shows you the space where your model
evolves. Run mode/edit mode.
@section Rules panel
@cindex Rules panel
@glindex Rules panel
@anchor {rules_panel} The rules panel is a combination of two panels: one devoted
to the rules tree, the other to a rule you may have selected to study or modify.
As it is often useful to switch from one view to the other, it's nice to have one
next to the other and to be able to enlarge either one easily.
@sp 1
@section Open / Close / Save
@cindex Open / Close / Save
@glindex Open / Close / Save
@glindex Gem-graph Open / Close / Save
@glindex Open / Close / Save
@anchor {Open/Close/Save} Open / Close / Save
@sp 1
@section Help
@cindex Help
@glindex Gem-graph Help
@glindex Help
@anchor {help} Help
@node gem_graph_simple_models
@chapter Simple models
@cindex Simple models
@glindex Simple models
@anchor {simple_model} The aim of this chapter is to make it easier to learn
gem-graph by working in more detail on very simple models.
@sp 1
It is very easy to complicate a model. Sometimes all you need to do is add an
object or a rule and the complexity increases exponentially.
@section Hello world
@section Random walk
@section Multiple random walks
@section Pendulum
@section Models addition
@sp 1
@node gem_graph_mechanism
@chapter Gem-graph mechanism
@cindex Gem-graph mechanism
@cindex Automaton
@glindex Gem-graph mechanism
@anchor {mechanism}
Le moteur du serveur de gem-graph (scheduler + workers + reference arrows list)
peut exécuter le même type de calcul dans des espaces de toutes dimensions,
toutes tailles, toutes topologies, qu'ils soient bornés ou non (en toutes
directions ou en partie). Chaque concepteur de modèle devrait avoir la
possibilité de définir selon ses besoins chacun de ces paramètres,
indépendamment, pour chaque modèle.
To produce the desired representation efficiently, each set of rules must
satisfy a number of constraints.
@node random_generation
@section Random generation
@cindex Random generation
@glindex Random generation in gem-graph
@anchor {randomization_usage}
@subsection Rules
Génération de règles aléatoires
@subsection States
Génération de dessins aléatoires
@subsection Filtering
Selection tools (filters, pattern recognition)
@sp 1
@section Comparison
A single rule could encompass all the possible
states of the whole space and say, in each case how it must be redrawn.
This rule would be very complex but, hopefully, this theoretical case is
only useful for the presentation of the gem-graph mechanism and comparisons
with other spatial automata.
@sp 0
In practice, rather than writing such a very complex rule, it is possible to
break it down and write a set of small rules, each one indicating how the
state of a small part of the whole space should be transformed (and the graph
representing it rewritten).
@sp 0
As similar situations may recur from time to time here and there, the size
of the set of small rules will be smaller than that of the large rule that
would describe everything.
At this point, before going any further, we need to agree on vocabulary and
definitions.
@sp 0
In gem-graph, a state is a state of the space.
the big rule, the small rules, the global space and the local spaces.
The Big Rule describes all possible rewritings in the Global Space. There is
only One Big Rule and it can rewrite all the possible states of the Global
Space. In contrast, there are lots of small rules and lots of local spaces
and each small rule applies exactly to a local situation in a local space.
@sp 0
Now, how does the automaton works? It permanently searches here and there
in the Global space if there is a situation that can be rewritten. If it
founds one, it rewrites it and that's all. This means that all the local
spaces are independent. Rewritings are parallell and occur at random.
@sp 0
Can a cause and an effect be described in such a representation? Absolutely
yes. A situation A is the cause of a situation B if no other situation can
be transformed (rewritten) in B. If another situation can be transformed
(rewritten) as B, it is another cause of B.
@sp 0
Each small rule is a part of the Big Rule.
Each local space is a part of the Big Space.
@sp 0
@sp 0
that would describe all the possible states of the whole space and say,
for each one, how it should be rewritten
@node gem_graph_space
@section Space
@cindex Space
@anchor {space}
@glindex Gem-graph space
@glindex Space
Espace vide, espace saturé, graphes connexes, objets, percolation
@node gem_graph_rules
@section Rules
@cindex Rules
@anchor {rules}
@glindex Gem-graph rules
@glindex Rules
Non contradiction, non redondance, complétude (théoriquement possible).
Profondeur et largeur de l'arbre des conditions. Parcours d'arbre. Performances.
Détection des règles inutilisées.
Détection des objets ou situations non intentionnelement générés.
@node choice_of_a_space_work_at_random
@section Random
@cindex Randomization
@anchor {randomization}
@glindex Randomization
Le choix de l'espace de travail (espace local) est toujours aléatoire.
Deux situations ne peuvent être synchronisées que si elles sont reliées
(dans l'espace, par le dessin).
Pour représenter le lien entre une cause (état 1) et un effet (état 2),
il faut et il suffit qu'aucune règle n'atteigne l'état 2 sans provenir
de l'état 1. Plusieurs causes peuvent avoir le même effet.
@node ergodic_hypothesis
@section Ergodic hypothesis
@glindex Ergodic hypothesis
Assume that the average of a process parameter over
time and the average over the statistical ensemble are the same.
If an ergodic equilibrium is attained, all accessible microstates are
equiprobable over a long period of time.
Some gem-graph models may satisfy the ergodic hypothesis.
@auindex Boltzmann Ludwig
@node Markov_chain
@section Markov chain
@auindex Markov Andrey Andreyevich
@glindex Gem-graph theory
@glindex Theory
A Markov chain is a sequence of possible events in which
the probability of each event depends only on the state attained in the previous
event. All gem-graph processes are Markov chains.
@node gem_graph_models_addition
@section Models addition
@cindex Models addition
@glindex Gem-graph addition
@glindex Models addition
@glindex Addition of models
@anchor {models_addition} Trois conditions doivent être réunies pour pouvoir
additionner des modèles :
@itemize
@item Ils doivent être dessinés dans des espaces de même dimension.
Il serait possible de copier des objets 2D dans un espace 3D mais
l'inverse supposerait une opération et le plus souvent une perte d'information.
Dans tous les cas, les règles devraient être réécrites.
@itemize
@item Une unité d'espace d'un modèle (un 'grain') peut représenter des objets de
taille très différente. Pour pouvoir additionner deux modèles, il faut que les
objets décrits soient de même taille dans les deux modèles. Deux familles de
solutions sont possibles :
@item modifier la taille des objets de l'un des modèle ou des deux, au prix
éventuel d'une perte de définition du modèle résultant.
@item encourager la production de modèles compatibles dès leur conception
lorsqu'une 'unité naturelle' (ex: atome, individu,...) peut servir d'unité
de représentation et pourrait faire l'objet d'un consensus.
Les outils d'addition des modèles seraient améliorés par la définition préalable
de ces standards.
@end itemize
@item Ils doivent être indépendants. Les modèles indépendants peuvent être
additionnés automatiquement. @anchor {models_independence} Def indépendance:
No rule in one is applied to a state in another.
Le client gem-graph devrait fournir des outils (analyse et possibilités d'action)
facilitant l'addition de modèles interdépendants (merge).
@end itemize
@node gem_graph_labels
@section Labels
@cindex Labels
@anchor {labels} (cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/17})
@cindex Transitions format
@glindex Gem-graph labels
@glindex Labels
@anchor {transitions_format}
Un graphe géométrique peut être interprété comme un objet (graphe connexe), une
situation (objets proches les uns des autres) ou un 'label' (ou balise).
Un label est un objet (graphe connexe) particulier qui a l'apparence d'une
chaine de caractères (lisibles par un humain ou non) et qui peut être le
support d'une information de nature différente d'un dessin. Un nombre non
prédéfini de labels peut être associé à toute partie d'un dessin lorsque
le concepteur d'un modèle souhaite y ajouter des informations d'intérêt
(valeur, référence, lien, identifiant, addresse, annotation, commentaire, date,
auteur,...).
Il est essentiel que ces informations soient écrites dans l'état et non dans
les transitions car le maintien de l'homogéneité du format d'écriture des
transitions garantit qu'elles peuvent être traitées automatiquement.
Le client gem-graph devrait fournir des outils facilitant l'édition de labels.
Définir des normes faciliterait l'édition de labels.
@node gem_graph_meta_objects_and_transitions
@section Meta-objects Meta-transitions
@cindex Meta-objects
@cindex Meta-transitions
@cindex Vectorial representation
@cindex Pattern recognition
@glindex Vectorial representation
@glindex Pattern recognition
@glindex Meta-objects Meta-transitions
@anchor {meta_object}
@anchor {meta_transition}
@anchor {représentation_vectorielle}
@anchor {pattern recognition}
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/15})
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/14})
Le concepteur d'un modèle peut souhaiter représenter (dessiner) un même
'objet-réel' de différentes façons selon les situations ou suivant les
transitions qui s'appliquent à cet objet. Il peut donc considérer plusieurs
'objets-dessinés' (graphes connexes) comme des représentations d'un même
'objet-réel'. Il peut souhaiter également éditer des liens entre ces différents
représentations et, éventuellement, y ajouter d'autres informations. L'ensemble
des informations concernant un même 'objet-réel' constitue un meta-objet.
Le client gem-graph devrait fournir des outils facilitant l'édition de meta-objets.
La représentation vectorielle, partielle ou complète, des objets devrait être
encouragée lorsqu'elle est possible.
A la date de création de cette issue (nov 2021), cette technique n'a jamais
été testée.
Le concepteur d'un modèle peut souhaiter représenter (dessiner) un même
'objet-réel' de différentes façons selon les situations ou suivant les
transitions qui s'appliquent à cet objet. L'ensemble des informations
concernant un même 'objet-réel' constitue un meta-objet. Le concepteur
peut souhaiter définir une même transition sur tout ou partie des objets
(graphes connexes) d'un ou de plusieurs meta-objet(s). Un ensemble des
transitions concernant un même 'objet-réel' ou meta-objet constitue une
meta-transition.
Le client gem-graph devrait fournir des outils facilitant l'édition de
meta-transitions.
L'utilisation d'outils utilisant des représentations vectorielles des
meta-objets devrait être encouragée lorsqu'elle est possible.
L'identification d'objets et de situations par un ensemble de conditions
est une technique de 'pattern recognition' qui pourrait être optimisée
par des méthodes développées en IA.
A la date de création de cette issue (nov 2021), cette technique n'a jamais
été testée.
@node gem_graph_coupling_to_flows
@section Models coupling to flows
@cindex Models coupling to flows
@glindex Gem-graph coupling to flows
@glindex Coupling to flows
@anchor {models_coupling_to_flows}
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/19})
Certains phénomènes participant à des phénomènes complexes sont décrits
de façon optimale par des équations continues représentant des flux.
Ces modèles utilisent des gradients de variables intensives (ex: pression,
température, densité,...) pour décrire les états et calculer leurs évolutions.
Chaque modèle gem-graph devrait pouvoir être couplé à de tels modèles.
L'idée d'un couplage entre modèles de nature différente a déjà été proposée (ref 1).
Ce couplage suppose remplies au moins toutes les conditions suivantes:
- superposition des espaces et des temps des deux modèles
- lecture des valeurs d'une variable d'intérêt du modèle continu par le
modèle gem-graph au moyen d'une condition spécifique
- écriture dans le modèle continu des modifications effectuées par le
modèle gem-graph au moyen d'une action ('assignment') spécifique.
A cette date (nov 2024), cette technique n'a jamais été testée.
@auindex Wishart, D. S.
@auindex Smith, A.
References
@cite {Smith, A., P. Turney, et al. (2002). JohnnyVon: self-replicating
automata in continuous two-dimensional space. NRC Publications Archive.}
@cite {Wishart, D. S., R. Yang, et al. (2005). Dynamic cellular automata:
an alternative approach to cellular simulation. In Silico Biol 5(2): 139-161.}
@node gem_graph_coupling_to_waves
@section Models coupling to waves
@cindex Models coupling to waves
@glindex Gem-graph coupling to waves
@glindex Coupling to waves
@anchor {models_coupling_to_waves}
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/18})
Certains phénomènes participant à des phénomènes complexes sont décrits de façon
optimale par des équations continues représentant des ondes.
Chaque modèle gem-graph devrait pouvoir être couplé à de tels modèles.
Ce couplage suppose remplies toutes les conditions suivantes:
superposition des espaces et des temps des deux modèles
lecture des valeurs d'une variable d'intérêt du modèle décrivant les ondes
par le modèle gem-graph au moyen de conditions spécifiques prenant en
compte l'orientation, la section efficace, l'énergie, la phase,...
écriture dans le modèle continu des modifications effectuées par le modèle
gem-graph au moyen d'une action ('assignment') spécifique
A cette date (nov 2024), cette technique n'a jamais été testée.
@node non_geometric_graphs_extraction
@section Non geometric graphs extraction
@cindex Non geometric graphs extraction
@glindex Non geometric graphs extraction
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/12})
Des graphes non géométriques pourraient être 'extraits' de chaque état d'un
gem-graph. Ces graphes s'intéresseraient seulement aux propriétés non
géométriques des gem-graphs, oubliant les propriétés liées à leurs coordonnées
spatiales.
Il pourrait être utile de les comparer, de les classer et d'étudier leurs
propriétés mathématiques.
Le client gem-graph devrait fournir - sous forme de modules - des outils
d'extraction de tels graphes à partir de gem-graphs. Des dessins
(sans graphe associé) pourraient être 'extraits' de chaque état d'un gem-graph.
Les annotations, qui ne représentent pas les objets eux-mêmes ni les situations,
seraient alors supprimées ou converties.
@node gem_graph_modularity
@section Modularity
@cindex Modularity
@glindex Gem-graph modularity
@glindex Modularity
@anchor {modularity}
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/13})
Des interfaces gem-graph spécialisées devraient être créés pour traiter les
modèles de certains systèmes complexes particuliers. Liste (non exhaustive)
de communautés d'utilisateurs potentiels:
biologie cellulaire,
biologie du développement,
écologie,
géographie,
climatologie,
économie,
urbanisme,
...
Une organisation modulaire du logiciel permettrait de développer séparément
les interfaces dédiées à des utilisateurs particuliers (ex: accès à certaines
banques de données, références, contexte,...) qui présenteraient peu d'intérêt
pou les autres.
Une bibliothèque de modules spécialisés devrait être organisée.
@node gem_graph_theory
@chapter Gem-graph Theory
@cindex Gem-graph theory
@cindex Automaton
@glindex Gem-graph theory
@glindex Theory
@glindex Philosophy
@section Philosophy
Gem-graph is a tool for representing complex phenomena that are difficult to
present with commonly used tools.
A philosophy of science, art and games is associated to its conception and
developpment. Here it is.
@sp 0
@subsection How to represent?
We can first agree that no complete representation of the world or of what
you imagine is possible. In any case, you have to make compromises and
choices (cf. Luis Borges).
If you are designing a game or creating a piece of art, you need to choose
some degree of realism or abstraction or some materials or tools or media but
not others, etc. If you are a scientist, you have to choose some hypotheses.
Making these choices, you accept some constraints and expect some benefits.
What are the constraints provided by gem-graph? What kind of work and efforts
does it needs? What benefits can it provide?
While looking for answers to these questions, let's try to analyse the
limits that algebraic notations encounter when complexity increases.
Note that all the discussion that follows concerns mostly condensed matter
evolving within Newtonian time and space.
@sp 0
To calculate, you first have to represent. What representations are most
often used and why?
@sp 0
Most physical phenomena can be described by equations in which the objects
are represented by letters and the operations on them by special symbols:
the operators. Chemistry uses several languages ranging from algebra to
geometry. Biology makes great use of images and the natural sciences, in
their broadest sense, cannot escape the use of images. This extends to most
human sciences and practices (history, geography, engineering, etc.).
When is it better to use algebra alone or geometry or both?
How to represent is a choice.
@sp 0
@subsection Symbols shapes and functions
The shape of objects determines their function. It's because the wheel is
circular that it can roll. In the abstract algebraic notations, this relation
from the structure to the function is lost. Most often, the symbol shape says
nothing about the symbol meaning. It may be a mnemonic device, but it is of
no use for calculation.
@sp 0
By contrast, only the shapes of the objects themselves or their reciprocal
positions determines what rule the gem-graph automaton will apply.
Combinations of symbols only - all of one and the same nature - draw these
shapes and the shapes determine the actions.
The more different shapes and interactions there are, the more varied and
complex the model, and the more this representation simplifies the
calculations.
@sp 0
@subsection Writing complexity
The use of algebraic notation means that each of the different properties
of a structure (mass, load, movement, geometry) must be represented by a
different symbols. These symbols may be themselves combinations of simpler
symbols.
When the diversity of objects and interactions is low and good approximations
are possible, this notation simplifies the representation and efficiently
supports the calculations. As the size and complexity of the system increases,
so does the number of symbols involved and the complexity of the writing.
Writing complexity becomes then an independent problem in its own right.
@sp 0
Gem-graph is designed to optimise the description of these situations by
using graphic combinations of a single symbol. Everything that depends on
shapes (fermions) is described by drawings of the shapes. The calculations
are performed directly on the shapes themselves.
As shapes cannot describe the interactions of bosons, a parallel
representation is needed to represent them.
Gem-graph can also interact with parallel continuous representation of the
intensive values of thermodynamic models.
@sp 0
@subsection Naming objects
By associating a symbol with the identity of an object or a class of objects,
we are making the assumption that the identity of this or these objects will
not vary. Describing the changes made to objects named in this way will then
require the introduction of new symbols.
@sp 0
The shapes represented by gem-graph can themselves vary or shift.
The recombinations, deletions or additions of the single symbol used to draw
everything can describe any change to any object without the need to introduce
a new type of symbol.
As for the names of the objects themselves, if they exist, they are not used
by the gem-graphic mechanism.
They can be applied by the model designer to any shape or situations he wishes
to identify a posteriori, for example for measurement purposes.
This possibility is totally independent of the calculation itself.
@sp 0
@subsection Labelling objects
Another possibility is to add @emph {labels} to some objects or situations.
These labels can be drawned in the space model itself.
A label is a particular shape drawned in the model space.
This shape does not represent a part of the world.
Instead, it encodes a name or a link the conceptor whishes to add towards
some external information. Its moves and/or changes have to be specified by
particular rules.
Ideally, it should occupy as little space as possible so as not to interfere
with the dynamics of the world represented.
As gem-graph is based on the association of integers to each space unit,
it is easy to create numerous labels occupying each a minimal volume and
easy to edit. A network of beacons can therefore be discreetly inserted
into the world design to make it easier to observe.
@sp 0
@subsection Granularity
In a complex system, a great variety of objects must be represented in the
same time and space with the sames scales but not all their parts need to be
detailed with the same precision. Identifying which parts need to be detailed
from those that needs not requires a supplementary treatment. Even if the
final result is a reduction of the total quantity of information no simple
compression algorithm applies to all cases.
@sp 0
Gem-graph requires no additional treatment as its drawings are conceived to
combine areas where the design is detailed with areas where it is not,
simultaneously and in the same space.
Its rules structure applies in all cases.
@sp 1
@subsection For each model, there exists a simplest set of assumptions
To make evolve representations, sets of rules must satisfy constraints
(non self-contradiction, non redundancy).
@sp 0
Because they must take theses constraints into account, graph rewriting systems
provide a guide for expressing the simplest set of assumptions underlying
each model.
@sp 0
For each model, there exists a simplest set of assumptions.
Can we demonstrate this proposition or its opposite?
@sp 0
@subsection Writing an automaton @c Good practices for ...
In some automaton, states and rules may not be clearly separated and/or may
each be written in an inhomogeneous way.
Each inhomogeneity requires specific treatments and adds its own compexity
to that of the model.
A good practice would be to simplify as much as possible the writing of the
automaton.
@sp 0
The use of a single symbol guarantees both states and rules perfect
homogeneity.
@sp 0
@subsection From continuous to discrete values
Continuous algebraic values must be converted in discrete values to be used
in model simulation.
@sp 0
Gem-graph uses only discrete values. No such conversion is needed.
@sp 1
@subsection Canonical form
There exists a minimal form for geometric graphs rewriting.
@sp 0
No simplest form can exist that combinations of ONE symbol in a space made of
ONE type of space units (to demonstrate).
@sp 0
ref George B. < He spoke about algebra.
It is about geometry now.
@sp 1
@subsection From description to explanation
From the scientific point of view, the explanation differs from description
because it makes an hypothesis on what "stands under" the description.
It necessarily introduces "something" (some structure and/or interaction)
that is not in the description and which causes at least a part of what
is described. Each description is unique whereas an hypothesis may apply
to several descriptions.
@subsection Summary @c redondant (à déplacer et regrouper)
In brief, gem-graph allows you to represent and make evolve representations
of complex systems whatever the variey of their components and of their
interactions. This power has a price. The initial static representation may
be not too heavy to produce but writing the detailed rules that will specify
the behavior of each possible interaction will be a heavy task.
Gem-graph makes this work possible and facilitates it as much as possible
because its conception allows (1) a progressive approach of the final design
and (2) automatic edition tools of the final product: the initial state and
the rules set that makes it evolve.
@sp 0
Graph rewriting systems are well suited to represent complex systems
(i.e. whith a great variey of components and interactions) and to describe
their evolution because the objects - or rather the situations - are drawn
instead of being forever predefined and associated to a symbol.
The operators are the rules that modify these drawings.
An automaton applies these rules to these drawings which are then "re-drawn".
As all the drawings are made of combinations of a single symbol (an arrow
going from a space unit to another), all the rules that redraw them rely on
the same simple pattern.
Objects are not pre-defined. You can identify them in your initial design but
they can diseappear an you can identify new ones at your convenience.
Gem-graph automaton work is independent of these interpretations.
You can also choose the level of detail you need in any part of your description
and you can associate differents levels and make them evolve at your convenience.
@sp 1
@node spatial_automata_classification
@section Spatial automata classification
@cindex Spatial automata classification
@glindex Spatial automata classification
Spatial automata classification. Scope, definitions
@sp 1
Cellular automata
Artificial chemistries
Agent-based models
@node gem_graph_history
@section History
@cindex History
@glindex Gem-graph history
@glindex History
@anchor {history}
The development of modelling by rewriting geometric graphs has been,
remains and will remain an unfinished process.
May knowledge of its history help to optimise its rewritings!
@sp 1
@glindex Gem-graph invention context
In the 1950s-1970s, a new frontier of knowledge was emerging: nobody
knew how to use the power of computers to better understand biology.
None of the calculation methods known and used until then were really
suitable. A community known as "Artificial Life", led by MIT in particular,
gradually took shape around this issue. Several annual international
conferences bring together biologists, chemists, computer scientists,
roboticists, mathematicians and philosophers. Their exchanges call into
question the boundaries and nature of their different disciplines.
Concepts and even words often mean different things to different people.
In the end, their most solid points of reference were the questions they
share: Can life be defined? Did it appear suddenly or gradually? Is it
necessarily complex? Is a theory of biology possible, or can biology only
be studied and described in its historical context? The "in silico" biology,
a term coined by analogy with "in vivo" and "in vitro", became commonly
used to designate the modelling of living organisms carried out by computer
(whose chips are made of silicon). This term is a misnomer because the
models that use it only reproduce, at best, an isolated property of living
organisms. The problem stemed from both insufficient knowledge and a lack
of methods, in both biology and computer science. Between 1980 and 2000,
the development of computer languages and the power of personal computers
encouraged research using digital modelling. In biology, in 1995, the first
genome was completely sequenced (_ref), quickly followed by others. This
legitimised research into minimal organisms that would be completely known
and therefore controllable (Craig Venter). In 2012, the first complete
model simulating both the metabolism and reproduction of a contemporary
living organism was published (Jonhatan Karr), ushering in the era of
integrative biology.
@sp 0
@url {https://en.wikipedia.org/wiki/History_of_artificial_life}
@sp 0
@url {https://en.wikipedia.org/wiki/Modelling_biological_systems}
@sp 1
@cindex Complex systems
@anchor {complex_systems}
@glindex Gem-graph summarized
@glindex Gem-graph principles
@glindex Gem-graph fundamentals
@glindex Complex systems
In that context Jean Sirmai, author of this manual, invented
gem-graph, seeking to create a spatial automaton suitable for representing
the complex phenomena that take place within a cell. The representation of
the cell was the main focus of his work, and the automaton was seen as
a simple tool. It was difficult to separate the development of the two.
The first model he produced using this technique was published in 2012 (_ref).
Gem-graph was briefly described in it but it already possessed all its
main characteristics and its logical coherence (see Appendix A).
Such as it was, it provided an independent working method that could be
applied to many complex systems, both biological and non-biological.
A complex system was defined here as composed of a large number of
different objects interacting in a large number of different ways.
From this point on, gem-graph started to become an independent project.
@sp 1
@glindex Gem-graph invention
This invention took place in successive slabeles between 1992 and 2015.
I was not aware of Francisco Varela work when I started my own research.
In 1974, Francisco Varela's tried to represent the autopoietic phenomenon
in a minimal cell in activity. The result of their very first attempt was
a cellular automaton capable of rewriting simple symbols - letters,
operators - in a small flat space. Depending on their relative positions,
these symbols could be transformed and/or moved. A string of 'M's could,
for example, represent a membrane and a '*' a catalyst (ref).
These representations were inspired by John H. Conway's 'Game of Life',
which was frequently studied at the time. (ref)
Both Jean Sirmai's (1992) and
What is different ?
- unique symbol
- the space is explored according to its content
- each transition can convert more than a single cell
- clear separation between space and rules + no other information
- transitions are parallell, independent from each other and occur at random.
Chrystopher L. Nehaniv demonstrated in 2002 that asynchronous cellular automata
can fully emulate the behavior of any synchronous cellular automaton.
Cellular automata has drawbacks. (1) Each transformation applies only to one
cell. (2) The shape of each rule is different, which makes it difficult to
associate them. (3) The history written by this succession of transformations
is unpredictable. An ergodic state can be attained only by chance.
Let's detail these drawbacks and see how gem-graph has solved them.
@c @image {showcase/aXoris minimal cell.png}
@sp 1
@auindex Nehaniv, C. L.
@cite {Nehaniv, C. L. (2002). Evolution in Asynchronous Cellular Automata.
In Artificial Life VIII (pp. 65-73)}
@glindex Cellular automata
@glindex Integrative bio
logy
@glindex Artificial Life
@glindex Biology "in silico"
@glindex Biology minimal organisms
@glindex Biology completude
@glindex Biology theory
@glindex Biology integrative
@glindex Digital modelling
@glindex Biology genome
@glindex Genome sequencing
@glindex Automaton space
@glindex Automaton rule
@glindex Automaton mechanism
------------------
@cite {Karr Jonathan R. A whole-cell computational model predicts phenotype
from genotype Cell. 2012 Jul 20;150(2):389-401. doi: 10.1016/j.cell.2012.05.044.}
@auindex Karr Jonathan R.
@auindex Venter Craig
@auindex Prigogine Ilya
@sp 0
Trois paradigmes: Prigogine Ilya, Varela Francisco, Conway John Horton Le 'jeu
de la vie'
Bottom-up/top-down Analyse/synthèse topics/methods
Modèles minimaux Exhaustivité Complétude (Karr 2012)
Systèmes complexes (dont la bio.)
@auindex McMullin Barry
@cite {McMullin Barry Thirty years of computational autopoiesis: a review
Artif Life. 2004 Summer;10(3):277-95. doi: 10.1162/1064546041255548}
@auindex Varela Francisco
@auindex Maturana Humberto
1974 Le concept d'autopoièse (Francisco Varela & Humberto Maturana) (ref)
Redéfinition de l'autopoièse : persistance + liaison entre constituant d'un
même individu
Isoperformance (relation complexité / efficience de tous les composants d'un
individu)
@auindex Langton Christopher
'Life as it is' versus 'Life as it could be'
@auindex Conway John Horton
Le 'jeu de la vie': un système formel Turing-complet
Le paradigme des automates cellulaires (ref)
Les modèles orientés-objets insuffisants face aux phénomènes complexes (ref)
De 1992 à 2020, réorganisation quasi permanente du logiciel
(structures de données, nommage et algorithmes) (ref) pour résoudre les
contraintes suivantes:
granularité / tailles des structures en interaction
simultaneité / asynchronie
1994 Premier poster à Heidelberg. Critiques: 'pas réaliste'.
Quelle granularité et quelle définition choisir ?
Conclusion : les structures représentées doivent déterminer les fonctions.
Rien de plus. Toute l'information nécessaire à la reconnaissance de la fonction
doit se trouver dans l'état.
1995 premier génome complet (Haemophilus influenzae 400 gènes seulement mais
parasite) (ref)
la connaissance de l'intégralité des génomes ouvre l'ère de l'exhaustivité:
Le nombre de parties d'un être vivant est fini.
Toutes sont ou peuvent être connues et totalement décrites (atome par atome)
Comment reconstituer le tout à partir des parties ?
La recherche d'une théorie biologique et le développement des modèles
(Artificial Life)
Peut-on définir la vie ? Comment ? Le débat naturalisme / vitalisme.
L'exobiologie
Les modèles 'set of keys' and 'bag of chemicals'. Conséquences sur le
"milieu intérieur".
Un arbre logique du vivant distinct du graphe historique.
Postulat: la représentation optimale des connaissances biologiques nomologiques
(non-historiques) ?
Postulat: l'auto-production condition nécessaire de l'auto-re-production.
Une proposition de démonstration : si une structure était dédiée à la
reproduction mais non auto-productrice d'elle-même, c'est une *autre* structure
qui devrait la reproduire.
Ceci conduirait à une récurrence infinie donc impossible.
Une chimie des symboles : Gem-graph peut convertir des états en règles de
transition et des règles de transition en états.
Principales innovations successives:
Transitions locales (pas globales) (à la différence des automates cellulaires)
Initialement, tous les objets de l'espace global étaient des symboles
(des caractères 'M' ou 'E', par exemple) identifiés chacun individuellement
par le programme qui opérait leurs déplacements ou transformations.
Puis ils sont devenus des dessins mais, même s'ils avaient la même forme,
ils restaient identifiés par un code non inscrit dans l'espace.
Désormais, leur identité est inscrite dans l'espace même, localement,
et pas dans la règle. Leur forme doit être reconnue reconnue par la règle
(pattern recognition) pour qu'ils puissent être manipulés.
Des objets complexes: chaque case de l'espace est munie de liens pour
s'accrocher à d'autres
Les objets peuvent être complexes: composés de combinaisons de plus d'une case
(à la différence des automates cellulaires)
Ceci permet à la forme des objets d'indiquer leur fonction.
Ceci permet aussi de transformer, trasporter et combiner les objets du modèle
facilement.
Les processus combinatoires (polymérisations) sont indispensables en biologie
Gem-graph ne peut pas représenter (la conservation de) l'énergie, mais
on peut convenir qu'à des formes d'objets identiques
sont associées des énergies potentielles identiques
(énergie potentielle = énergie que l'objet peut libérer ou stocker en étant
transformé)
Mouvement aléatoire de tous les objets = modèle d'une solution (sans le solvant)
Un seul format de règles pour décrire des mouvements et / ou des transformations
Qu'importent les structures, pourvu qu'elles représentent des fonctions !
Les conditions ne reconnaissent plus que des formes dessinées et deviennent
uniformes.
Séparation systématique des états et des règles de transition
Séparation des conditions et des actions des règles sous des formats standards
Espace plan enroulé sur un tore; matrice hexagonale
Plusieurs sites par 'particule'. Plusieurs flèches superposées.
Conditions d'une règle connectées par des 'ET'
Règles connectées par des 'OU'
Deux types de conditions: sur une cellule, sur une flèche
Deux types d'actions: translation, rotation
Condition de probabilité
Addition de modèles compatibles
Association possible de modèles gem-graph à de modèles décrivant des flux
et/ou des ondes
Un seul type de règle élémentaire (1 condition et 1 action, 1 seul symbole)
@sp 1
IL NE PEUT PAS Y AVOIR D'ÉCRITURE DE RÈGLE PLUS SIMPLE.
@sp 1
Commutativité
Un même moteur pour 1D, 2D et 3D
Les modèles et les préférences des utilisateurs sont stockés sous format XML
Des règles locales, aléatoires et asynchrones respectent les relations de
causalité
Parallélisme (premiers tests)
Arbre des conditions
Séparation des projets gem-graph (nommé fin 2020) et des projets biologiques
(aXoris, nommé vers 1995)
gem-graph est adapté à la représentation de tous les phénomènes complexes
@subsection Acknowledgements
@sp 1
Merci à ma famille d'avoir toléré et laissé s'exprimer ma folie à laquelle j'ai
consacré tant de temps.
C'est grâce à vous que j'ai appris à partager des moments heureux.
@sp 1
@auindex Boisard 'seb' Sebastien
@strong {Sébastien Boisard} que j'ai rencontré début 1994 a contribué à ce projet
en construisant, en C, un premier parseur des règles (efficace).
Il pensait en avoir "@emph {pour quelques jours}".
Il a entrepris ce travail à l'automne 1996 et l'a achevé en février 1998.
Puis il est est devenu ingénieur au CNRS et, plusieurs années après, a décidé de
'monter sa boite'.
@sp 1
Notre collaboration a été un bonheur et je le remercie profondément pour tout
ce qu'il m'a appris.
@sp 1
Son parseur a permis de manipuler jusqu'à 500 règles et a été un indice qui
nous a guidé vers de nouveaux développements possibles.
Il a notamment mis en évidence le fait qu'il fallait pouvoir manipuler
automatiquement (lire et écrire) de très grands nombres de règles
et que la structure de ces règles devait donc être simple et parfaitement définie.
@sp 1
Au début de son travail,
@itemize
@item ni la forme des règles, ni celle des états, ni les méthodes de modélisation,
ni même le but des modèles, n'étaient clairement définis
@item Le choix du langage oscillait entre Pascal, C et Java
@item L'auto-production avait été imparfaitement représentée (1993)
mais pas l'auto-re-production
@item Les règles étaient lues séquentiellement
@item Leur grammaire s'est stabilisée une première fois grâce à ce parseur fin 1995.
@end itemize
@sp 0
@c -
La grammaire des règles a continué à évoluer.
Par la suite, plusieurs parseurs Java ont été construits jusqu'à l'obtention
de la forme minimale (la plus simple possible) vers 2009 (?).
@sp 1
@auindex Bourmault 'neox' Adrien
En octobre 2020, @strong {Adrien 'neox' Bourmault} a eu connaissance de ce
travail et s'y est intéressé.
Son analyse et ses recommandations ont impulsés une réécriture complète du
code mais surtout une profonde réorganisation des méthodes.
Ce qui était jusque là une recherche artisanale a pu s'orienter,
grâce à son expérience et à sa rigueur, vers un travail d'équipe
avec l'objectif d'atteindre une qualité suffisante pour attirer
de nouveaux développeurs (et la labellisation GNU Project ?).
Cette première version témoigne à tous les niveaux de son implication.
@sp 1
Ses principaux apports ont été théoriques :
@itemize
@item choix d'une architecture modulaire client-serveur,
@item conception 'système' et non plus seulement objet,
@item méthodologie de développement
@end itemize
et pratiques :
@itemize
@item planification
@item choix d'une palette d'outils libres, actualisés et de qualité
garantissant la cohérence de l'ensemble du développement:
Guix, langage C, git, Libxml, Makefile, GTK4, OpenGL, Doxygen, Texinfo
@end itemize
@sp 1
Les principales étapes de cette réorganisation on été:
@itemize
@item En 2021, Architecture modulaire client-serveur
@item Redéfinition du fichier XML avec notation des règles sous forme d'arbre
de conditions.
@item GIT
@item Début 2023 langage C, LibXML, OpenGL,
@item Automne 2024 Doxygen, Texinfo
@end itemize
@sp 1
Cette réorganisation a mis en évidence :
@itemize
@item Le sous-ensemble des flèche-origine (éligibles comme origine de l'espace local);
@item Les autres modes d'écriture possible des flèches (départ-arrivée,
départ + module + angle);
@item Le parcours de l'espace local (espace de travail)
est encodé par l'ordre des conditions dans l'arbre
=> abandon des parcours séquentiels de listes de règles
=> plusieurs parcours possibles (auparavant : le seul parcours spirale)
=> optimisation souhaitable (par le client) du parcours pour chaque modèle
(dans tous les cas, la fabrication de l'arbre que le serveur utilisera
incombe au client)
@item Le cycle de vie du modèle : correction des erreurs reproductibles puis aléatoires;
@item Les outils nécessaires pour ces deux phases de la conception du modèle;
@item La fixation du vocabulaire est en cours / création d'un glossaire.
@end itemize
@sp 1
ref _bibliogaphie, _méthodologie
@sp 1
@auindex Sirmai 'jean' Jean
@cite {Sirmai, J. (2011). A Schematic Representation of Autopoiesis
Using a New Kind of Discrete Spatial Automaton.
Advances in Artificial Life, ECAL 2011, MIT Press.}
@cite {Sirmai, J. (2012). Autopoiesis Facilitates Self-Reproduction.
Advances in Artificial Life, ECAL 2012, MIT Press.}
@section Gem-graph as a medium for artistic expression
@cindex Gem-graph as a medium for artistic expression
@anchor {medium_for_artistic_expression}
(cf. @url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/10})
@glindex Poetry
Rewriting geometric graphs can also support artistic expression. It may help
creators to freely conceive and design shapes, movements, colours and sounds
they love. Gem-graph is an open-ended adventure! There can never be too much
poetry in this world!
@node bibliography
@node topics_and_concepts
@node authors
@node glossary
@node quotations
@unnumbered Bibliography
@cite {Karr Jonathan R. A whole-cell computational model predicts phenotype
from genotype Cell. 2012 Jul 20;150(2):389-401. doi: 10.1016/j.cell.2012.05.044.}
@sp 1
@cite {McMullin Barry Thirty years of computational autopoiesis: a review
Artif Life. 2004 Summer;10(3):277-95. doi: 10.1162/1064546041255548}
@sp 1
@cite {Nehaniv, C. L. (2002). Evolution in Asynchronous Cellular Automata.
In Artificial Life VIII (pp. 65-73)}
@sp 1
@cite {Sirmai, J. (2011). A Schematic Representation of Autopoiesis Using a
New Kind of Discrete Spatial Automaton. Advances in Artificial Life,
ECAL 2011, MIT Press.}
@sp 1
@cite {Sirmai, J. (2012). Autopoiesis Facilitates Self-Reproduction.
Advances in Artificial Life, ECAL 2012, MIT Press.}
@sp 1
@cite {Smith, A., P. Turney, et al. (2002). JohnnyVon: self-replicating
automata in continuous two-dimensional space. NRC Publications Archive.}
@sp 1
@cite {Wishart, D. S., R. Yang, et al. (2005). Dynamic cellular automata:
an alternative approach to cellular simulation. In Silico Biol 5(2): 139-161.}
@sp 1
@url {https://forge.a-lec.org/gem-graph/Gem-graph/issues/10} (10 <--> 19)
@unnumbered Topics & Concepts Index
@printindex cp
@sp 1
@unnumbered Authors Index
@printindex au
@sp 1
@unnumbered Glossary
@printindex gl
@unnumbered Quotes
@section Nehaniv Chrystopher(2012)
@sp 1
Abstract
@sp 1
Building on the work of Von Neumann, Langton, and Sayama among others,
we introduce the first examples of evolution in populations of
self-reproducing configurations in asynchronous cellular automata.
Reliance on a global synchronous update signal has been a limitation
of all solutions since the problem of achieving self-production in
cellular automata was first attacked by Von Neumann half a century ago.
Results of the author obviate the need for this restriction.
@sp 1
We review our simple constructive mechanism to transform any cellular
automata network with synchronous update into one with essentially the
same behavior but whose cells may be updated randomly and asynchronously.
The generality of this mechanism is guaranteed by a general mathematical
theorem that any synchronous cellular automata configuration and rule can
be realized asynchronously in such a way that the behavior of the original
synchronous cellular automata can be completely recovered from that of the
corresponding asynchronous cellular automaton,
in which temporal synchronization locally stays within small tolerances.
@sp 1
It follows that most results on self-reproduction, universal computation
and construction, and evolution in populations of self-reproducing
configurationsin cellular automata that have been obtained in the past
carry over to the asynchronous domain using the method described here.
@sp 1
Here we discuss requirements for evolutionary systems in cellular automata
and describe implemented examples of our procedure applied to a variety of
self-reproducing systems (Byl, Reggia et al., Langton, Sayama).
@sp 1
In particular, we have implemented Sayama's evo-loop system asynchronously,
giving the first example of evolution in asynchronous cellular automata.
@sp 1
(extract page 2)
@sp 1
A @emph {cellular automaton} is a network of identical deterministic
finite state automata and a graph structure such that:
@enumerate
@item each node has the same (finite) number of neighbors,
@item at each node we have a fixed ordering on the neighbor nodes, and
@item the next state of an automaton at a node v is always the same
function of its current state and of the state of its neighbors.
@end enumerate
The graph describes the connexions of these automata.
A configuration is any assignment of local state values to the set of
automata at nodes in the graph.
@section Sirmai Jean (2011)
In the 2011 and 2012 papers, the name "gem-graph" was not yet in use
and what is named "arrow" today and "symbol" in the following extract
was named "link" in 2011 and "index" in 2012.
It the 2012 paper, what is gem-graph today was presented as follows
NB The text has been simplified and reorganised, but no new concepts have
been introduced.
@sp 1
@emph {"a graph rewriting system embedded in a spatial automaton able by
combinations of a unique symbol to represent an unlimited variety of moving
and interacting objects.
Each transition associates a set of conditions to a set of operations.
All the conditions are the same type: they test the number of arrows in a
given location and orientation. All operations are of the same type: they
move an arrow from a place to another. The space is not explored using its
coordinates but according to its content. Each transition converts only a
part of the space. All information regarding the description of objects is
in the space. All information concerning their movements and interactions
is in the transitions. No other information is encoded. Transitions are
parallell, independent from each other and occur at random. They can
move, deform, transport, or transform objects, each object being an isolated
part of the graph. This formalism does not limit the variety of movements or
transformations that can apply to each object. A second-level language
could be superimposed to the first to recognize the objects and enable the
user to interact directly with them."}
@bye