anchor.diff:  
   ==== Passage au SVG
   
  -A partir du l'objet dessinable, on injecte des élements SVG dans le DOM pour
  +A partir de l'objet dessinable, on injecte des élements SVG dans le DOM pour
   afficher l'automate à l'écran.
   
  -Manipuler le DOM peut rapidement devenir coûteux ; toutes les optimisations
  +Interroger le DOM est coûteux ; toutes les optimisations
   devraient être effectuées en amont pour qu'il n'y ait pas nécessité de
  -rechercher l'information dans l'arbre. Pour illustrer le propos, imaginons
  -qu'il faille dessiner une flêche entre deux le centre de deux cercles déjà
  +rechercher l'information dans l'arbre. Pour illustrer ce propos, imaginons
  +qu'il faille dessiner une flêche entre les centres de deux cercles déjà
   dessinés. Il est préférable de connaître à l'avance les coordonnées des points
  -qui composent la flêches plutôt que d'interroger le DOM sur la position des
  -cercles à cette fin.
  +qui composent la flêche plutôt que d'interroger le DOM sur la position des
  +cercles.
   
   En parvenant à réduire cette étape au maximum, on peut très facilement la
   remplacer par une autre chargée d'écrire un fichier SVG plutôt que de
  
positive.code: 
  Dessiner un graphique en SVG via une description textuelle d'un automate.
  
  Suppose de définir un DSL pour créer un automate.
  
  ==== Produit fonctionnel viable
  
  Le premier objectif est de produire une application web côté client (Javascript)
  qui, étant donnée une spécification complète sous format JSON d'un automate fini,
  le dessinera sur la même page en SVG.
  
  L'application se compose de :
  
  - un champ de texte de taille fixe sur la gauche invite l'utilisateur à écrire
  le JSON
  - un canvas de taille fixe sur la droite acceuille l'automate
  - un bouton en haut propose de dessiner l'automate
  
  De plus :
  
  - le positionnement des états sur le canvas est donné par l'utilisateur
  - les transitions sont représentées par des fléches droites
  - le positionnement des étiquettes est choisi naïvement
  
  ==== Produit attendu
  
  L'application soumise à l'issue du projet devra, à partir du produit minimum
  viable, posséder les fonctionnalités suivantes :
  
  - Une interface adaptative
  - Un canvas de taille variable
  - Un algorithme infére la position des états si omise
  - Les flêches sont des courbes et les étiquettes sont lisibles
  - Les transitions d'états identiques sont regroupées sous une même flêche
  - Le langage de description de l'automate est le plus simple possible pour
  l'utilisateur (pas/peu de caractères spéciaux, inférence des états, etc.)
  - Les erreurs dans la description sont repérées et proprement signalées
  
  ==== Améliorations envisageables
  
negative.code: 
  ----
  [ {
    type: "automata"
    symbols: [
      { value: "a" }, { value: "b" }
    ],
  