\chapter{Introduction}%\minitoc

%Intro barrée
Depuis l'avènement de la science informatique, les modèles sont de plus en plus
utilisés pour décrire et comprendre le monde qui nous entoure. Automatisés et
portés par les langages de programmation, ils sont de plus en plus imposants,
au sens où ils incorporent de plus en plus d'information et visent à être de
plus en plus complets. Barrant le chemin à une meilleure compréhension de notre
environnement, la modélisation des \emph{systèmes complexes} est le prochain col
à franchir dans la compréhension du vivant (pour les sciences du vivant) et dans
la compréhension des fondements des modèles (pour les sciences informatiques et
mathématiques).

Il existe un riche vocabulaire entourant le monde des \emph{systèmes
complexes}: émergence, immergence, backward- et forward-causality, …
Ces notions sont difficiles à appréhender car elles se fondent sur
des cas particuliers (comme les exemples classiques du jeu de la
vie~\cite{gardner_mathematical_1970}, des boids~\cite{reynolds_flocks_1987} ou
de la fourmilière~\cite{wilensky_netlogo_1997}) et sur un certain laxisme formel
dans la description des modèles, provenant de la confusion entre les objets que
le modèle manipule et de notre propre identification de ces mêmes objets. Pour
chacun des exemples donnés ci-dessus, nous pouvons nommer des propriétés qui ne
font pas partie du modèle:
\begin{itemize}
  \item Dans le jeu de la vie, un observateur parlera souvent de «glider», de
    «canons» à glider, de «beacon», de «pulsar», etc.;
  \item Dans le modèles des boids, un observateur identifiera un comportement
    de groupe et cherchera à en identifier le «leader»;
  \item Dans le modèle de la fourmilière, un observateur remarquera que les
    individus sélectionnent le «plus court chemin» pour rapporter la nourriture
    au nid, et qu'ils traitent les sources de nourriture dans l'ordre «du plus
    proche au plus lointain».
\end{itemize}
Toutes les propriétés mises entre guillemets ci-dessus ne sont pas des
propriétés des modèles présentés, il n'y a pas de «glider» dans le modèle du
jeu de la vie, il n'y a pas de «leader» dans le modèle des boids ni de «plus
court chemin» dans le modèle de la fourmilière. Ce sont des interprétations qui
sont faites sur le déroulement d'une simulation, des propriétés d'un modèle
\emph{implicite} que l'observateur établi de lui-même. Rendre explicite ce
modèle puis lier formellement ces propriétés émergentes au modèle d'origine est
un enjeu de taille, car il permettrait de relier tout ensemble de propriétés
\emph{locales} à des propriétés \emph{globales}, c'est-à-dire des propriétés des
individus à des propriétés du groupe formé de ces individus.

% Loi / simulation | global / local
Un outil classique de la modélisation, les équations différentielles, nous
donne l'occasion d'illustrer ce rapport local/global. Un système d'équations
différentielles permet de décrire le comportement d'entités locales (au cours
du temps, les unes par rapport aux autres, …). Lorsque ce système d'équations
différentielles possède une solution, alors la fonction solution est une
\emph{loi globale} du modèle établi au niveau local. Il existe un lien formel
entre le comportement local de ces entités et leur comportement global. Il
est possible d'étudier cette fonction \emph{directement} en toute généralité.
Toutefois, cette solution au système d'équations différentielles n'existe pas
forcément. Dans ce cas, il est toujours possible d'obtenir le comportement
global de ces entités par intégration numérique, c'est-à-dire en approchant
la fonction solution \emph{au cas par cas}. N'ayant pas accès à la fonction
solution, il n'est cependant pas possible d'étudier directement le comportement
global de cette population.

%equadiff avec solution = loi (fast path)
%equadiff sans solution = simulation (slow path)

% Le multi-modèle à la rescousse ?
Nous prendrons partie pour le fait que construire un modèle constitué de
plusieurs sous-modèles nous permet sous certaines conditions de répondre à la
problématique. Cela doit nous permettre de concilier les comportements locaux et
globaux de ce système. Nous appellerons cette technique la \emph{modélisation
multi-niveau}, que nous considérons comme une sous-branche de la modélisation
multi-modèle.

La modélisation multi-modèle consiste à conjuguer différents modèles
d'un système, où chacun des modèles décrit une partie fonctionnelle ou
structurelle du système. Ces modèles, développés indépendamment, sont parfois
rédigés dans des formalismes si distincts qu'il est difficile de les faire
collaborer. Un exemple de discipline reposant sur cette problématique est la
\emph{mécatronique}~\cite{bishop_mechatronics_2002}, dont le sujet d'étude
est le couplage entre systèmes mécaniques et électroniques. La modélisation
multi-niveau s'intéresse aux modélisations multi-modèle ayant les propriétés
suivantes:
\begin{itemize}
  \item Le système peut se représenter comme un \emph{empilement} de points
    de vue appelés \emph{niveaux de description}. Même si ces niveaux ne
    sont pas agencés dans un ordre total, il existe cependant une relation
    caractérisable entre eux, comme par exemple une relation d'abstraction.
  \item Un niveau de description du système peut n'être que partiellement
    connu et c'est par leur couplage que la modélisation du système se trouve
    \emph{renforcée}~\cite{banos_coupling_2015}.
\end{itemize}
Sans entrer dans les détails, nous considérerons qu'un modèle est réductionniste
s'il peut être découpé en sous-parties autonomes permettant, une fois assemblées
de décrire exactement son comportement. La construction précédente permet de
garder une vision réductionniste des parties du système, tout en indiquant que
parfois il n'est pas possible de fournir un modèle réductionniste du système
entier, notamment à cause d'un manque de connaissance sur le système.

% Introduction trop longue, quand est-ce qu'on tappe ?
Nos travaux sont issus de réflexions sur la modélisation multi-niveau,
l'activité comme un niveau de description dans un langage de programmation
spatiale et la simulation de la morphogénèse dans de grandes populations de
bactéries, ayant pour origine les motivations du projet ANR Blanc \synbiotic.


\section{Le projet \synbiotic}\label{sec:synbiotic}
Dans cette section, nous présentons le projet ANR \synbiotic\footnote{La
page de présentation du projet est disponible en ligne à l'adresse
\url{http://synbiotic.spatial-computing.org}}.

Le projet de recherche \synbiotic vise à développer des formalismes et
des outils informatiques permettant de spécifier un comportement spatial
global et de le compiler automatiquement à travers une tour de langages
intermédiaires dans des processus locaux de régulation cellulaire (régulation
génétique, métabolique, signalisation). La motivation finale est de permettre
l'exploitation des propriétés collectives d'une population bactérienne pour
créer des biosystèmes artificiels répondant à divers besoins dans le domaine de
la santé, des nanotechnologies, de l'énergie et de la chimie.

\synbiotic s'inscrit dans le domaine des langages de programmation non
conventionnels et de l'analyse de propriétés des systèmes dynamiques, à
l'interface de l'informatique et de l'ingénierie biologique. Il s'appuie sur
les avancées de la biologie synthétique, les progrès réalisés dans la
modélisation et la simulation de processus biologiques complexes, et sur le
développement de nouvelles approches de la programmation permettant de faire
face à de nouvelles classes d'application caractérisées par l'émergence d'un
comportement global dans une grande population d'entités irrégulièrement et
dynamiquement connectées (le calcul amorphe et le calcul autonome).

La biologie synthétique est un domaine scientifique qui concerne la conception
et la fabrication banalisée et standardisée de composants et de systèmes
biologiques sans correspondants naturels. Elle est toujours en quête de
principes de conception permettant une réalisation fiable et sécurisée à partir
de composants biologiques réutilisables.

Dans ce contexte, l'objectif est de concevoir et développer les outils
permettant de « compiler » (au sens de la compilation des langages de
programmation) le comportement global d'une population, par exemple, de
bactéries, en des processus cellulaires locaux à chaque entité. Notre motivation
à très long terme est de permettre l'exploitation des propriétés collectives
d'une population (bactérienne) pour créer des biosystèmes artificiels répondant
à divers besoins dans le domaine de la santé, des nanotechnologies, de l'énergie
et de la chimie verte. L'approche originale que nous proposons se fonde sur une
tour de langages de programmation, dont l'étage le plus abstrait définit un
modèle computationnel pour une population cellulaire et l'étage le plus primitif
correspond à un agencement de séquences d'ADN. Chaque langage compile ses
constructions propres vers le langage de la couche inférieure et ce, jusqu'au
bioware (le « hardware biologique »). Cette approche, similaire à celle suivie
avec succès dans le domaine de la synthèse d'architecture matérielle (chaîne
de compilation vers le silicium), permet de combler le fossé existant entre la
description d'un système au niveau d'abstraction pertinent pour l'application
et la prise en compte de tous les détails de son implantation par des processus
physico-chimiques. Elle permet de modulariser la conception d'un système,
divisant les difficultés et isolant des niveaux d'abstraction qui peuvent
évoluer indépendamment. Dans cette approche, un programme ne définit pas une
fonction qui associe une sortie à une entrée mais spécifie un système dynamique
(biologique) distribué qui essaie de maintenir des invariants en dépit des
perturbations et des changements de l'environnement.

% \synbiotic est un projet de recherche fondamentale à long terme qui s'inscrit
% dans le domaine à la fois des langages de programmation non conventionnels et
% dans l'analyse/validation de propriété de systèmes dynamiques. Il s'agit
% d'un projet informatique qui vise à utiliser les nouveaux supports de calcul
% fournis par les avancées de la biologie synthétique et non à les produire.
% \synbiotic a pour objectif d'étendre les techniques et les outils développés
% dans la modélisation et la simulation de processus biologiques complexes
% et d'intégrer de nouvelles approches de la programmation (programmation
% spatiale, programmation amorphe et programmation autonome) afin de faire face
% à de nouvelles classes d'applications caractérisées par l'émergence d'un
% comportement global dans une grande population d'entités localisées et
% irrégulièrement interconnectées de manière dynamique.
%
% \paragraph{Une approche informatique en amont de l'ingénierie génétique.}
% Si la plupart des études actuelles cherchent à formaliser, concevoir,
% caractériser et valider des composants biologiques réutilisables, nous nous
% positionnons en amont de cette étape. La biologie synthétique regroupe des
% stratégies scientifiques et des technologies très différentes qui incluent
% la conception et la construction de génomes, la conception de protéines,
% la synthèse de composés biochimiques par de nouvelles voies métaboliques
% et la construction de circuits de régulation génique dans des cellules et
% des micro-organismes. Pour ce qui nous concerne, nous faisons l'hypothèse
% qu'il existe des bibliothèques standardisées de comportements biochimiques
% élémentaires qui peuvent être composés dans une bactérie, comme par exemple
% les BioBricks.
%
Notre objectif est d'adresser la conception de grands systèmes biologiques
par une approche langage, de la même manière que VHDL permet la conception
de système de traitement de l'information à partir de portes et de blocs
logiques élémentaires. Ce projet informatique repose sur trois hypothèses :
l'apport des formalismes discrets, un processus de conception fondé sur la
compilation d'une tour de langages et la prise en compte des aspects spatiaux.

Notre première hypothèse est que des modèles informatiques discrets sont
adéquats pour décrire des biosystèmes et parfois plus pertinents que des
approches mathématiques traditionnelles comme les équations différentielles.
Cette hypothèse est corroborée par l'important développement actuel des
formalismes informatiques dans le domaine la biologie des systèmes. En
particulier, ces formalismes sont plus à même de capturer de manière concise
les aspects qualitatifs et quantitatifs des grands réseaux d'interactions
biochimiques impliqués dans les processus biologiques. Ces formalismes
permettent de découpler les abstractions utilisés dans le processus de
conception (signal, gradient, mémoire, propagation, information de position…)
des processus biochimiques utilisés pour leur implémentation, de la même
manière qu'un bit abstrait de manière robuste une implantation électrique
dans une électronique à base de silicium. Par ailleurs, ces formalismes
permettent d'aborder la question de la validation : que peut-on garantir sur les
comportements du système biologique artificiel, quel est le domaine de viabilité
du système, quels sont les perturbations de l'environnement qui sont tolérables,
quels est la résilience du système, peut-on garantir que certains états sont
inatteignables, tracer les processus, tester les comportements attendus, etc.

Notre seconde hypothèse est qu'à partir de ces formalismes, la compilation est
une approche descendante plus souple que l'assemblage direct de composants
biologiques prédéfinis. Le processus de compilation permet d'instancier des
composants élémentaires génériques dans un organisme particulier, permet de
prendre en compte des contraintes d'assemblage (comme l'évitement de cross-talk
entre circuits de régulation) ainsi que la simplification et l'optimisation
des circuits obtenus par assemblage. Cette approche de haut-niveau correspond
à la synthèse d'un système à partir de ses spécifications et repose sur la
possibilité de dériver le comportement des parties à partir du comportement
d'un tout. Ce problème est notoirement plus simple que celui de l'inférence de
propriétés globales à partir de comportements locaux (émergence) et a montré
toute son utilité dans le domaine de la synthèse d'architecture, mais aussi dans
le cadre de la programmation spatiale et de la programmation amorphe. Un des
enjeux du projet est de montrer que ces techniques peuvent être appliquées avec
succès à la synthèse de biosystèmes.

% \paragraph{La prise en compte du spatial.}
Enfin, notre dernière hypothèse est que, même si pour l'instant la biologie
synthétique se focalise sur la « programmation d'une seule bactérie »,
le développement de biosystèmes un tant soit peu complexe reposera sur
le fonctionnement intégré de colonies bactériennes et donc sur la prise
en compte d'interactions spatiales au sein d'une population de cellules
différenciées. Il est en effet douteux qu'une cellule puisse supporter un
nombre arbitraire de comportements artificiellement imposés. Au contraire,
l'exemple des processus biologiques naturels montrent toute l'importance de
l'organisation spatiale et de la compartimentalisation (membrane, vésicule,
cargo, compartiment, cellule, biofilm, tissus, organe, etc.) permettant la
spécialisation et le fonctionnement intégré au sein d'un système compris
comme une écologie. Par ailleurs, la maîtrise des interactions spatiales
ouvre la voie à une ingénierie du développement (« développement » au
sens biologique du terme), ce qui permet de rêver à des applications qui vont
bien au-delà de la conception de la cellule comme « usine chimique ».
%
% \paragraph{Un volet validation.}
% Le positionnement du projet est résolument informatique et se
% concentre sur le développement de techniques de compilation et de validation
% en amont de l'ingénierie génétique. Cependant, afin de valider les outils
% développés, nous souhaitons les mettre en œuvre concrètement à travers leur
% utilisation à l'intérieur du projet par une application de morphogénèse et,
% à l'extérieur, par une équipe iGEM.

\paragraph{Découpage des tâches.}
Le projet \synbiotic est découpé en six \emph{Work Packages} (WP), dont les WP
1, 2, 3 et 4 forment une tour de langages reliant le hardware/wetware (WP4) au
langage de spécification global (WP1). Voici une description de ces quatre
tâches:
\begin{description}
  \item[WP1: Ingénierie des formes] ce WP est en charge de concevoir, de
    développer et d'implémenter des exemples d'applications qui pourront être
    utilisées par les autres WP.
  \item[WP2: Programmation spatiale déclarative] ce WP est en charge de
    l'élaboration d'un langage de programmation spatiale L1, dont la fonction
    est de décrire les exemples du WP1 (définis en terme de primitives spatiales
    sur des populations) vers un langage de plus bas niveau servant d'entrée au
    WP3.
  \item[WP3: Programmation orientée entité] ce WP est en charge de l'élaboration
    d'un nouveau langage L2 prenant en entrée les concepts utilisés en sortie de
    L1 et les instanciant dans les individus (des bactéries).
  \item[WP4: Programmation orientée réseau de régulation] l'enjeu de ce WP est
    de permettre la traduction de la sortie de L2 vers un médium biologique,
    afin d'obtenir une implémentation finale \emph{in vivo}.
\end{description}
Les WP 5 et 6 sont transversaux et se chargent de «calculabilité et complexité»
et de «Bio-sûreté et bio-sécurité» respectivement.


 \section{Objectifs et organisation de cette thèse}
Dans cette section nous présentons brièvement les objectifs de ce manuscrit et
les chapitres qui le composent afin de donner au lecteur une vue d'ensemble des
résultats obtenus.

Comment nous l'avons vu, nos travaux sont ancrés dans le contexte du projet
\synbiotic. Nous avons contribué aux WP2 (chapitre 3) et au WP3 (chapitre 4).
Nous avons également dépassé le cadre du projet en nous intéressant de plus près
à la nature des modèles (mathématiques) et à la définition de la modélisation
multi-niveau.

\paragraph{Chapitre 2: Une approche formelle générale des niveaux de
  modélisation}
Dans ce chapitre nous proposons une première voie de réponse à notre
problématique en nous attaquant au problème de la définition à la fois
formelle et générique des niveaux de modélisation. Nous introduisons une
définition claire de ce qu'est un \emph{modèle formel} qui nous permet de
présenter explicitement notre point de vue. Une fois ce socle à disposition,
nous présentons différentes classes de modèles avec leurs exemples dans notre
formalisme mettant en évidence la possibilité d'identifier ces classes de
modèles suivant plusieurs critères reposant sur la structure mathématique
associée à leur comportement. Nous proposons enfin une construction de
niveaux d'abstraction, reposant sur quelques principes issus de la théorie
des catégories, introduisant la validation, l'abstraction et la composition
des modèles dans ce cadre. Nous instancions finalement sur un exemple les
définitions précédentes mettant en lumière les relations existantes entre quatre
modèles d'un système proie-prédateur.
%enfin poser les fondements
%des relations entre modèles tel que nous les avons présentés plus

\paragraph{Chapitre 3: L'activité spatiale comme outil de modélisation}
Dans ce chapitre nous présentons le langage L1 du WP2 en posant un cadre
pratique et théorique porté par le projet \MGS. Ce dernier développe un langage
de programmation dédié à la modélisation et la simulation de systèmes dynamiques
à structure dynamique. L'état du système est décrit à travers une structure
de données — la collection topologique — qui met l'accent sur les relations
topologiques entre les éléments du système. L'évolution du système est spécifiée
au moyen d'une structure de contrôle — la transformation — qui décrit, sous
forme de règles \emph{locales}, les interactions entre les éléments du système.
Nous présentons l'activité spatiale dans le contexte de \MGS, qui nous indique
la répartition dans une collection topologique de la sous-collection active
et nous implémentons un algorithme nous permettant de mettre à jour cette
collection sans connaissance de la sous-collection quiescente. Au delà de
l'optimisation en temps de calcul qu'il apporte à certaines simulation, cet
outil nous permet de capturer une \emph{propriété d'ordre supérieur} du modèle
et offre une voie pour la description, dans \MGS, de modèle à plusieurs niveaux
de description.

\paragraph{Chapitre 4: Un exemple concret de simulation multi-niveaux} Dans
ce chapitre nous ouvrons une troisième voie de réponse à notre problématique,
tournée vers la pratique, où nous présentons la conception d'un simulateur de
populations de bactéries \Ecoli, nommé \otb, correspondant au langage L2 du WP3
de \synbiotic. En effet, l'évolution de ces populations de bactéries montre
un fort potentiel pour la modélisation et la simulation multi-niveau: une
population suffisamment importante mène à des propriétés définies uniquement
à l'échelle de cette population, comme l'émergence et le maintient de formes
particulières — la morphogénèse. Le but de ce simulateur n'est pas, comme dans
les chapitres précédents, de fournir une méthode générique pour exprimer ces
propriétés mais plutôt de partir de la bactérie définie individuellement et
de tester, donc de mettre en évidence, le lien existant entre les propriétés
de l'individu (le réseau de régulation génétique) et les propriétés de la
population (les formes émergentes). Pour relever les défis posés par la
simulation d'un grand nombre d'individus, nous tirons partie du calcul parallèle
sur des cartes graphiques grand public et, dans ce cadre, nous avons développé
plusieurs algorithmes originaux pour le calcul parallèle dont le principal est
\ppm, inspiré des automates cellulaires et du voisinage de Margolus.


\section{Contributions}

Voici une liste succincte des contributions scientifiques apportées par cette
thèse.

\subsection*{Théorie et formalisation}
\begin{itemize}
  \item établissement d'un cadre formel pour l'expression unifiée des niveaux
    de modélisation, indépendamment de leur formalisme d'origine;
  \item définition de l'activité spatiale;
  \item élaboration d'un algorithme pour l'identification et le maintient d'une
    zone spatialement active dans \MGS;
  \item définition d'un algorithme générique (\ppm) pour le calcul parallèle.
\end{itemize}

\subsection*{Développement}
\begin{itemize}
  \item développement d'un simulateur pour mettre en évidence l'émergence et le
    maintient de formes dans une population de bactéries \ecoli.
\end{itemize}

\subsection*{Communications orales}
\begin{itemize}
\item présentation de «Computing Activity in Space» au workshop SCW13 de la
  conférence AAMAS 2013 à St Paul (Minnesota, USA), du 6 au 10 mai 2013;
\item présentation de «Topological Computation of Activity Regions» au workshop
  Work In Progress de la conférence SIGSIM PADS 2013 à Montréal (Québec,
  Canada), du 19 au 22 mai 2013;
\item présentation au séminaire du LACL, intitulé «Implementing Multiple Levels
  of Organization in a Spatial Programming Language» le 10 février 2014, à
  Créteil;
\item participation au workshop SCW14 attaché à la conférence AAMAS qui s'est
  tenu à Paris du 5 au 9 mai 2014;
\item participation au workshop 228 de l'INSERM intitulé : «Experimental
  approaches in mechanotransduction: from molecules to tissues and pathology»,
  du 21 au 23 Mai à Bordeaux, France;
\item présentation d'un tutoriel \MGS à la conférence ICCSA 2014, le 24 Juin
  au Havre, France;
\item présentation de «Managing the Interoperability Between Models of a Complex
  System» au workshop 6 satellite de la conférence ICCSA 2014, du 23 au 26 Juin
  au Havre, France;
\item présentation de «Spatial Computing for Integrative Modeling» au ComBio à
  Turku, Finlande, le 29 octobre 2015.
\end{itemize}

\subsection*{Communications écrites} Les travaux présentés dans ce manuscrit
ont donné lieu à plusieurs publications dans des conférences internationales
et nationale~\cite{potier_computing_2013, potier_topological_2013,
pascalie_developmental_2016}. Deux publications sont en cours de préparation en
vue de rendre public les travaux du chapitre \ref{chap:partie-multi-modele} et
du chapitre \ref{chap:partie-otb}.

\printbibliography[heading=subbibliography]

\subsection*{Autres contributions}
\begin{itemize}
  \item Encadrement à 50\% du stage de Master 1 de Romain Carriquiry Borchiari
    intitulé «Modélisation et simulation d'une population de bactéries en
    \opencl» duquel la toute première version de \otb est issu.
\end{itemize}
% \begin{itemize}
% \item DEVS-FIRE (X Hue)
% \item Parallèle avec la physique du solide et la physique du point ->
%   complexification (même si tout marcherai avec de la mécanique du point);
%   Distinction entre règles internes et règles externes.
% \item Discrete Differential Forms for Computational Modeling (Desbrun, Kanso,
%   Tong)
% \item Computation with competing patterns in Life-like automaton (Martinez,
%   Adamatzky, Morita, Margensten)
% \item Predicting Wildfire Spreading Through a Hexagonal Cellular Automata Model
%   (Trunfio, p401 de Cellular Automata)
% \item Modelling Wildfire Dynamics via Interacting Automata (Dunn, Milne, CA
%   p411)
% \item Downward Causation and the autonomy of Weak Emergence (Mark Bedeau)
% \item Multi-level simulation of farmer's land use and social organization
%   decision-making; an agent-based approach (Speelman, Jager, Grot, Garcia,
%   Tittonell)
% \item Problème de l'identité (Derek Parfit - Reasons and Persons - Livre de
%   400p)
% \item Mail du 16 avril 2013 à 19:06 (+photos)
% \item Accroche toi au niveau, j'enlève l'échelle (Gil-Quijano, Hutzler, Louail)
% \item Closes point method (Forest fire, level sets on surfaces)
% \item Symbiotic simulation (Fujimoto et al), Rapport Dagstuhl
% \item Filippi front tracking (modèle MGS dans le CVS
%   Exemple/Exemble-bezier/Front)
% \item Can we computerize an Elephant (David Harel, 2009, 2015) (AAMAS 2015)
% \item The detection of intermediate-level emergent structures and patterns
%   (Villani et al)
% \item Thèse Duboz : intégration de modèles hétérogènes pour la modélisation et
%   la simulation de systèmes complexes. (c'est du DEVS)
% \item WAVE parallel programming language
% \item Méchanotransduction (INSERM Workshop)
% \item Mathematical formulation of multi-layer networks (à mettre dans les
%   modèles formels)
% \item Introduction to the Mathematical Theory of Systems and Control (Polderman
%   \& Willems) -- inspiration pour la définiton générale de modèle.
% \item Kurtz, the relationship between stochastic and deterministic models for
%   chemical reactions.
% \item Spicher, Verlan -- Generalized Communicating P Systems Working in Fair
%   Sequential Mode
% \item
% \end{itemize}


% Appel à projet pour la création d'un DIM recherche transversale sur
% les systèmes complexes




% \section{Modéliser des systèmes complexes}
% % Modéliser?
% Concevoir des modèles est une pratique courante pour comprendre le
% fonctionnement d'un phénomène ou la structure d'un objet \emph{compliqué}. Le
% modélisateur a pour tâche de
% \begin{enumerate}
% \item \emph{identifier} les parties du phénomène étudié et en donner une
%   représentation simplifiée,
% \item \emph{assembler} ces parties, à l'aide d'un formalisme ou d'un langage de
%   programation,
% \item \emph{comparer} les propriétés principale du phénomène étudié avec les
%   propriétés annoncées par son modèle.
% \end{enumerate}
%
% \bigskip
% La première tâche du modélisateur est d'identifier les parties du système qu'il
% souhaite modéliser. C'est au modélisateur que revient la décision de nommer une
% partie qu'il a identifiée; cette tâche peut-être rendue difficile suivant les
% cas. En philosophie, la notion d'identité recouvre plusieurs concepts proches,
% elle est donc ambigüe et poser des problèmes dans certains cas, voici quelques
% exemples de paradoxes concernant l'identité.
%
% \paragraph{Un tas de riz}%
% Dans le langage courant, nous utilisons des mots pour nous réferer aux objets
% qui nous entourent. Quand plusieurs objets sont regroupés, ils peuvent être
% assimilés à un nouvel objet unique. Un exemple est le tas de riz. Le mot tas
% désigne un objet unique, constitué de multiples autres objets, en l'occurence
% des grains de riz. Comme il n'y a pas de limite claire concernant le nombre de
% grains de riz nécessaires à former un tas, il est apparemment difficile de
% déterminer lequel de ces raisonnements est approprié:
% %
% \begin{itemize}
% \item Un grain de riz n'est pas un tas. Ajouter un grain de riz à ce grain de
%   riz ne forme pas un tas. Ajouter un grain de riz à ces deux grains de riz ne
%   forme pas un tas. Donc ajouter un grain de riz à plusieurs grains de riz ne
%   forme pas un tas. Il semblerait, en raisonnant par récurrence qu'\emph{un
%     nombre arbitraire de grains de riz ne forme pas un tas};
% \item Un tas n'est pas un grain de riz. Enlever un grain de riz à un tas ne
%   change pas sa nature. Nous devrions pouvoir répéter cette opération jusqu'à
%   atteindre le moment où il ne reste qu'un seul grain de riz et déduire
%   qu'\emph{un grain de riz est un tas}.
% \end{itemize}
%
%
%
% \bigskip Pour la seconde tâche du modélisateur, construire le modèle, la science
% informatique et l'outil informatique sont principalement utilisés. Il existe de
% nombreuses techniques et outils de modélisation suivant les besoins et les
% domaines. Par exemple, la modélisation qualitative ou quantitative, discrète ou
% continue et l'étude des systèmes dynamiques. Couramment, les approches
% classiques de modélisation individu-centrés nécessitent la description des
% entités et des lois qui régissent les évolutions du système à un seul et unique
% \emph{niveau de description}: la molécule, la cellule ou le tissu en biologie;
% le quartier, la ville ou le pays en urbanisme; la note, la mesure ou le thème en
% musique… Certains phénomènes à modéliser opèrent clairement à plusieurs niveaux
% de description. Par exemple en biologie, l'embryogenèse est typiquement un
% problème décrit comme étant multiniveau. Comment, à partir d'une unique cellule,
% se développe un organisme multicellulaire autonome ? Comment modéliser le
% passage de l'individu à la population ? Comment décrire le phénomène de
% mécanotransduction, où l'application d'une force mécanique altère le
% développement d'un embryon ? Pour répondre à ces questions, il nous faut de
% nouveaux outils de modélisation prenant en compte plusieurs niveaux de
% description.
%
% Pour les nouvelles sciences de la complexité, les phénomènes ayant plusieurs
% niveau de description sont parfois appelés \emph{systèmes complexes}. Voici une
% définition qu'en donne l'Institut des Systèmes Complexes (\ISC):
% \begin{quote}
%   Les systèmes complexes sont des systèmes présentant un grand nombre d'entités
%   différenciées, interagissant de manière complexe : interactions non linéaires,
%   boucles de rétroaction, mémoire des interactions passées. Ils se caractérisent
%   par l'\emph{émergence}, au niveau global, de propriétés nouvelles non
%   observables au niveau des entités constitutives. Le niveau local fait émerger
%   des formes organisées au niveau global, lequel influence en retour le niveau
%   local (appelé «immergence»). Interactions locales et interactions globales
%   peuvent ainsi se conjuguer dans la description de leurs dynamiques. \hfill\ISC
% \end{quote}
% Cette définition nous fourni une image où deux niveaux de description, le niveau
% local et le niveau global, interagissent l'un sur l'autre, de local à global par
% l'émergence et de global à local par l'immergence, et où les propriétés des
% éléments observés sont restreintes à leur niveau de description.
%
% % le 2016-09-08, Martin a une révélation… Il était temps…
% \begin{quote}
%   Les propriétés d'un objet du monde réel \emph{dépendent} de son cadre de
%   modélisation, c'est à dire du modèle utilisé pour le décrire.
% \end{quote}
% En d'autre termes, les propriétés d'un objet modélisé \emph{ne sont pas} des
% propriétés de l'objet mais des propriétés du modèle. Cette hypothèse de travail
% est importante et se trouve au fondement de nos travaux. Sa première implication
% est qu'un niveau de description correspond à un modèle particulier.
%
% Cette limitation a pour conséquence directe de ne pas permettre de référencer
% les entités intervenant dans d'autres niveaux de description. Ainsi, en biologie
% moléculaire, ne disposant d'aucune notion de cellule, on ne peut décrire
% directement des processus tels que le \emph{transport actif} ou le \emph{quorum
%   sensing}. De façon plus générale, ces approches purement locales et
% réductionnistes ne permettent pas de prendre en compte des connaissances dont on
% dispose aux autres niveaux de description ni des relations causales qui existent
% entre les niveaux de description. Le défi que nous nous proposons de relever est
% de proposer un cadre à la fois pratique et théorique pour modéliser et simuler
% des systèmes dynamiques complexes en prenant en compte plusieurs niveaux de
% description.
%
% %Niveau de description
%
% Dans quelques travaux de recherche en informatique et en philosophie nous avons
% pu rencontrer le terme d'\emph{émergence}. Par exemple :
% \begin{itemize}
% \item Émergence forte ou émergence faible
% \item Émergence synchronique et diachronique
% \item Émergence computationnelle et combinatoire
% \end{itemize}
% Pour le reste de ce manuscrit, nous supposerons que la notion d'émergence, en
% tant que concept transversal et définit de manière différente suivant les
% domaines et les travaux, peut se résumer comme un problème de vocabulaire
% permettant d'énumérer les propriétés d'un modèle. Nous faisons donc l'hypothèse
% suivante :
% \begin{quote}
%   Soit un modèle $m_1$; une \emph{propriété émergente} du modèle $m_1$ est une
%   propriété appartenant nécessairement à un autre modèle que $m_1$.
% \end{quote}
% Comme parfois la présence de propriétés émergentes détermine l'aspect complexe
% du modèle d'un système, nous rendons par ce fait explicitement non-complexe les
% propriétés déterminables dans le modèle utilisé.
%
%
%
% %\subsection{Compliqué n'est pas complexe}
% \paragraph{Ce qui est compliqué: la complexité comme une mesure}
% Dans le champ de l'algorithmique, la complexité est une \emph{mesure} sur une
% chaîne de caractères $s$ où plus une chaîne est complexe, plus elle est
% difficile à compresser. D'un côté, la complexité de Kolmogorov est la longueur
% du plus petit programme informatique, écrit dans un langage formel donné,
% produisant $s$. D'un autre côté, les modèles de calculs sont des formalisations
% mathématiques d'une méthode de calcul d'un résultat $f(x)$ par une fonction $f$
% sur une entrée donnée $x$. En terme de puissance d'expression, tous les modèles
% de calculs universels se valent, leur complexité est donc évalué:
% \begin{itemize}
% \item en fonction du \emph{nombre de pas de calculs} nécessaire à une machine de
%   Turing pour reconnaître un mot donné, appelé complexité en temps, puis
% \item en fonction de la \emph{taille de la bande} nécessaire à une machine de
%   Turing pour reconnaître un mot donné, appelé complexité en espace.
% \end{itemize}
% Cette mesure donne naissance à toute une hiérarchie de classes de complexités.
% Nous ne nous intéressons pas, dans ce manuscrit, à la \emph{complexité comme une
%   mesure} dans le cadre de l'alogrithmique.
%
% \paragraph{Ce qui est complexe: la complexité comme une «propriété»}
% Nous nous intéressons dans nos travaux aux systèmes possédant la propriété
% d'être complexe, qualifiés de systèmes complexes dont les exemples les plus
% courants sont les systèmes biologiques, à tous leurs niveaux de description.
% Cette appellation porte à confusion et nous n'avons pas trouvé de définition
% faisant consensus. Nous avons cependant défini, grâce à \MGS, une catégorie de
% modèles recouvrant la plupart des systèmes complexes: ce sont les Systèmes
% Dynamiques à Structure Dynamique\footnote{en anglais Dynamical Systems with a
%   Dynamical Structure, abbrégé en DSDS, ou encore (DS)²}. C'est la définition à
% laquelle nous nous réfèrerons et nous nous abstiendrons d'utiliser le terme de
% système complexe dans la mesure du possible.

% La présente thèse apporte sa contribution sur trois plans principaux: le premier
% concerne la participation au WP2 avec la définition de l'activité spatiale
% au sein du langage \mgs, la seconde concerne le WP3 avec la conception du
% simulateur de bactéries \otb et le troisième livre une réflexion en cours sur la
% nature des modèles du multi-niveau, thématiques au cœur du projet \synbiotic.
%
% %simulateur
% \paragraph{Un accès aux grandes populations} La simulation par \otb\ d'une
% population de bactéries concerne le bas de la tour des langages, au plus près
% de l'assembleur génétique. Sa conception a pour vocation d'accélérer les
% retours concernant des hypothèses de travail et nous permet de savoir si elles
% sont plausibles, ou bien à rejeter. C'est donc une étape préalable à la
% conception d'une expérience en laboratoire. De plus, il est moins coûteux
% d'obtenir des réponses d'un simulateur que de construire une expérience
% \emph{in vivo} et d'attendre qu'une population de bactérie se développe
% dans un environnement contrôlé ; \otb\ a donc une place centrale pour une
% partie des travaux de recherche du projet. \otb, par son rendu grahpique
% accéléré par OpenGL et son usage du calcul parallèle avec OpenCL, permet
% d'observer la croissance d'une importante population de bactérie avoisinnant
% le million d'individus, dans un environnement de taille variable s'adaptant
% à la répartition spatiale des entités. Il permet ainsi de tirer des
% conclusions qualitatives sur le comportement de grandes populations. \otb\
% utilise également un langage d'entrée déclaratif, Synthetic Biology Genetic
% Programming~\cite{pascalie_morphogenetic_2016}, proche de celui de \gro~%
% \cite{jang_specification_2012}, ce qui permet de reprendre des précédentes
% simulations pour des tests à plus grande échelle. De par sa conception,
% \otb\ est aisément extensible grâce au langage de haut niveau OCaml et son
% architecture est modulaire, ce qui permet à un développeur d'ajouter ou de
% modifier facilement des fonctionnalités au simulateur. Enfin ce logiciel est
% libre, ouvrant la voie à des corrections et des améliorations sans entrave.
%
% %multi-modèle
% \paragraph{Un travail transversal}
% Nos travaux présentent, dans le premier chapitre, une approche formelle
% à la modélisation multi-niveau, issu d'un point de vue particulier sur
% le multi-modèle.
% %
% L'approche choisie par le projet \synbiotic est celle de l'ingénierie
% génétique : en choisissant d'emprunter la même voie que l'ingénierie des
% machines qui a donné le jour aux ordinateurs modernes et aux langages de
% programation, le projet tente de révéler des relations réductionnistes et
% de définir des sous-tâches plus simples à résoudre. De part l'élaboration
% de cette \emph{tour de langages}, le projet de recherche emprunte une approche
% informatique, où la complexité est entendue avec son sens algorithmique.
% Il est cependant intéressant de noter que la principale difficulté rencontrée
% concerne la description et la compréhension de ce qui constitue une forme de
% complexité inhérente au monde biologique : \emph{la complexité du vivant}.
% % Complexité
% Il n'y a pour l'instant pas de correspondance claire entre la complexité
% algorithmique et la complexité associée au vivant. Les systèmes complexes, au
% sens de la définition de l'ISC présentent la singulière caractéristique d'être
% simulables mais extrèmement difficiles à prédire. En d'autre terme, nous ne
% connaissons pas de \emph{lois} décrivant leur comportement \emph{global}. Les
% populations de cellules biologiques, par exemple, font partie des systèmes
% complexes. À l'inverse, la complexité des algorithmes est formellement définie.
% Les problèmes sont répartis en classes de complexité, dont on sépare les
% classes en temps ($\text{TIME}(t(n))$, $\text{NTIME}(t(n))$, …) des classes en
% espace ($\text{SPACE}(s(n))$, $\text{NSPACE}(s(n))$, …) ; toutes ces classes
% sont définies par rapport à un modèle de calcul central en informatique : les
% machines de Turing. Les classes en temps reflètent le nombre de pas nécessaire à
% une machine de Turing pour résoudre un problème tandis que les classes en espace
% reflètent la longueur de la bande, c'est à dire le nombre de cases mémoire,
% nécessaire pour résoudre un problème. La simulation d'un système complexe étant
% effectuée par un ordinateur, cette simulation fait donc au moins partie de la
% classe des problèmes décidables, car il suffit d'attendre l'itération de la
% simulation qui permet de décider d'une propriété.
%
% À l'instar de \synbiotic, d'autres projets de recherche s'intéressent à la
% question de la complexité du vivant. L'approche générique suivie par ces autres
% projet revient à assembler plusieurs modèles mathématiques ensemble pour
% reproduire les valeurs des observables observées dans la nature. Le lecteur
% trouvera d'autres exemples dans l'introduction au chapitre suivant.


% \paragraph{Aggrégation spatiale (Spatial Aggregation)}: L'aggrégation spatiale
% est un paradigme et un langage générique~\cite{yip_spatial_1996} unifiant la
% descriptions plusieurs solveurs de problème imagistiques. Ce langage leur permet
% de proposer un cadre commun pour décrire le fonctionnement de trois solveurs de
% problèmes spécialisés dans l'extraction d'informations qualitatives depuis des
% systèmes hamiltoniens (\textsc{Kam}), les structures d'espace d'était de
% systèmes dissipatifs (\textsc{Maps}) et de systèmes mécaniques à parties rigides
% (\textsc{Hipair}). Certains concepts utilisés se rapprochent de la programmation
% spatiale telle qu'implémentée dans \mgs{} telle que la structure de données
% générique sous forme de graphe de voisinage est un cas particulier de collection
% topologique. Dans chaque cas, l'objet à analyser est assimilable à un champ
% continu duquel l'outil utilisé tire des informations et correspond au niveau
% d'abstraction le plus bas. Le langage inclus des opérateurs pour transformer
% chaque niveau un niveau plus abstrait, par le biais d'agrégation et de
% classification. Les rapports montant et descendant entre les niveaux sont
% apparemment maintenu. Ces travaux adressent bien une partie de notre propre
% problématique, à ceci près qu'ils sont limités à quelques cas particuliers.
