diff --git a/doc/canonisation.txt b/doc/canonisation.txt
index 1db3a36561cfb050df246511e972ea406ac3cc30_ZG9jL2Nhbm9uaXNhdGlvbi50eHQ=..8c2d1e885e6b95e9f27a69411f7e2dc50d01c074_ZG9jL2Nhbm9uaXNhdGlvbi50eHQ= 100644
--- a/doc/canonisation.txt
+++ b/doc/canonisation.txt
@@ -1,3 +1,6 @@
+Idées sur la canonisation
+=========================
+
 from ginco.rql.node_lib import Variable
 
 def sort(canon_dict):
@@ -5,7 +8,9 @@
     for l in canon_dict['restriction'].values():
         l.sort()
 
--------------------------------------------------------------------------------
-Any N, N2 where N is Note, N2 is Note, N ecrit_par P1, P1 nom 'jphc', N2 ecrit_par P2, P2 nom 'ocy' ;
-Any Y, X  where X is Note, Y is Note,  X ecrit_par P1, P1 nom 'ocy',  Y ecrit_par P2,  P2 nom 'jphc' ;
+Exemple 1
+---------
+
+Formules équivalentes
+`````````````````````
 
@@ -11,4 +16,9 @@
 
+  Any N, N2 where N is Note, N2 is Note, N ecrit_par P1, P1 nom 'jphc', N2 ecrit_par P2, P2 nom 'ocy' ;
+  Any Y, X  where X is Note, Y is Note,  X ecrit_par P1, P1 nom 'ocy',  Y ecrit_par P2,  P2 nom 'jphc' ;
+
+Forme canonique
+```````````````
 
 N = Variable('N')
 N2 = Variable('N2')
@@ -53,4 +63,6 @@
 
 canon2 == canon1
 
+Exemple 2
+---------
 
@@ -56,2 +68,4 @@
 
+Formules équivalentes
+`````````````````````
 
@@ -57,7 +71,9 @@
 
--------------------------------------------------------------------------------
-Note N WHERE N ecrit_le D, N ecrit_par P, P nom 'jphc', D day > (today-10);
-Note K WHERE K ecrit_le D, K ecrit_par Y, D day > (today-10), Y nom 'jphc';
+  Note N WHERE N ecrit_le D, N ecrit_par P, P nom 'jphc', D day > (today-10);
+  Note K WHERE K ecrit_le D, K ecrit_par Y, D day > (today-10), Y nom 'jphc';
+
+Forme canonique
+```````````````
 
 N = Variable('N')
 D = Variable('D')
@@ -99,4 +115,6 @@
 canon1 == canon2
 
 
+Exemple 3
+---------
 
@@ -102,5 +120,4 @@
 
--------------------------------------------------------------------------------
-Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc' or P nom 'ludal';
-Note K WHERE K ecrit_le D, K ecrit_par Y, D day > (today -10), Y nom in ('jphc', 'ludal');
+Formules équivalentes
+`````````````````````
 
@@ -106,4 +123,9 @@
 
+  Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc' or P nom 'ludal';
+  Note K WHERE K ecrit_le D, K ecrit_par Y, D day > (today -10), Y nom in ('jphc', 'ludal');
+
+Forme canonique
+```````````````
 
 N = Variable('N')
 D = Variable('D')
@@ -146,7 +168,6 @@
 
 
 
-
-*******************************************************************************
-NE MARCHE PAS:
+Problèmes
+---------
 
@@ -152,3 +173,5 @@
 
-* les expressions RQL
+.1 Les paires de formules suivantes sont considérées comme identiques par
+   l'algorithme ci-dessus alors qu'elles ne le sont pas:
+
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc' or P nom 'ludal';
@@ -154,4 +177,3 @@
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc' or P nom 'ludal';
-et
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc', P nom 'ludal';
 
@@ -156,4 +178,3 @@
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc', P nom 'ludal';
 
-
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc' or P prenom 'ludal';
@@ -159,4 +180,3 @@
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc' or P prenom 'ludal';
-et
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc', P prenom 'ludal';
 
@@ -161,4 +181,4 @@
 Note N WHERE N ecrit_le D, D day > (today -10), N ecrit_par P, P nom 'jphc', P prenom 'ludal';
 
-seront considérées comme identiques avec ce modèle.
+donne comme restriction:
 
@@ -164,7 +184,5 @@
 
-
--->
  'restriction' : {'is' :        [(K, 'Note')],
                   'day':        [(D, '> (today-10)')],
                   'ecrit_le' :  [(K, D)],
                   'ecrit_par' : [(K, Y)],
@@ -167,7 +185,7 @@
  'restriction' : {'is' :        [(K, 'Note')],
                   'day':        [(D, '> (today-10)')],
                   'ecrit_le' :  [(K, D)],
                   'ecrit_par' : [(K, Y)],
-                  'nom_nom' :       [(Y, 'jphc', Y, 'ludal')]
+                  'nom_nom' :   [(Y, 'jphc', Y, 'ludal')]
                  }
 
@@ -172,4 +190,3 @@
                  }
 
-* risque de collision dans les noms de variables non sélectionnées (un
-  exemple ?).
\ No newline at end of file
+.2 risque de collision dans les noms de variables non sélectionnées (un exemple ?).
\ No newline at end of file
diff --git a/doc/specifications_fr.txt b/doc/specifications_fr.txt
index 1db3a36561cfb050df246511e972ea406ac3cc30_ZG9jL3NwZWNpZmljYXRpb25zX2ZyLnR4dA==..8c2d1e885e6b95e9f27a69411f7e2dc50d01c074_ZG9jL3NwZWNpZmljYXRpb25zX2ZyLnR4dA== 100644
--- a/doc/specifications_fr.txt
+++ b/doc/specifications_fr.txt
@@ -1,1 +1,3 @@
+.. -*- coding: utf-8 -*-
+
 =================================================
@@ -1,4 +3,4 @@
 =================================================
-Spécification "Relation Query Language" (Hercule)
+Spécification "Relation Query Language" (Hercule)
 =================================================
 
@@ -3,6 +5,6 @@
 =================================================
 
-:Author: Sylvain Thénault
+:Author: Sylvain Thénault
 :Organization: Logilab
 :Version: $Revision: 1.10 $
 :Date: $Date: 2004-05-18 15:04:13 $
@@ -18,9 +20,9 @@
 ----------------
 
 L'objectif est d'avoir un langage mettant l'accent sur le parcours de
-relations. A ce titre les attributs seront donc considérés comme des cas
-particuliers de relations (au niveau de l'implémentation, l'utilisateur du
-langage ne devant quasiment pas voir de différence entre un attribut et une
+relations. A ce titre les attributs seront donc considérés comme des cas
+particuliers de relations (au niveau de l'implémentation, l'utilisateur du
+langage ne devant quasiment pas voir de différence entre un attribut et une
 relation).
 
 
@@ -29,6 +31,6 @@
 
 SQL
 ```
-RQL s'inspire des fonctionnalités de SQL mais se veut à un plus haut niveau
-(l'implémentation actuelle de RQL génère du SQL). Pour cela il se limite au
+RQL s'inspire des fonctionnalités de SQL mais se veut à un plus haut niveau
+(l'implémentation actuelle de RQL génère du SQL). Pour cela il se limite au
 parcours de relations et introduit des variables. L'utilisateur n'a pas besoin
@@ -34,6 +36,6 @@
 parcours de relations et introduit des variables. L'utilisateur n'a pas besoin
-de connaitre le modèle SQL sous-jacent, mais uniquement le schéma Erudi
-définissant l'application.
+de connaitre le modèle SQL sous-jacent, mais uniquement le schéma Erudi
+définissant l'application.
 
 Versa
 `````
@@ -37,7 +39,7 @@
 
 Versa
 `````
-Faudrait que je regarde plus en détail, mais voilà déja quelques idées pour
-l'instant...  Versa_ est le langage ressemblant le plus à ce que nous voulions
-faire, mais le modèle de donnée sous-jacent étant du RDF, il y a un certain
+Faudrait que je regarde plus en détail, mais voilâ déja quelques idées pour
+l'instant...  Versa_ est le langage ressemblant le plus à ce que nous voulions
+faire, mais le modèle de donnée sous-jacent étant du RDF, il y a un certain
 nombre de choses tels que les namespaces ou la manipulation des types RDF qui
@@ -43,11 +45,11 @@
 nombre de choses tels que les namespaces ou la manipulation des types RDF qui
-ne nous intéressent pas. Niveau fonctionnalité, Versa_ est très complet
-notamment grâce à de nombreuses fonctions de conversion et de manipulations
-des types de base, dont il faudra peut-être s'inspirer à un moment ou à
-l'autre.  Enfin, La syntaxe est un peu ésotérique.
+ne nous intéressent pas. Niveau fonctionnalité, Versa_ est très complet
+notamment grâce à de nombreuses fonctions de conversion et de manipulations
+des types de base, dont il faudra peut-être s'inspirer à un moment ou à
+l'autre.  Enfin, La syntaxe est un peu ésotérique.
 
 Voir aussi
 ``````````
 RDFQL_
 
 
@@ -48,10 +50,10 @@
 
 Voir aussi
 ``````````
 RDFQL_
 
 
-Les différents types de requêtes
+Les différents types de requêtes
 --------------------------------
 
 Recherche
@@ -55,5 +57,5 @@
 --------------------------------
 
 Recherche
-  Ce type de requête permet d'extraire des entités ou des attributs d'entités.
+  Ce type de requête permet d'extraire des entités ou des attributs d'entités.
 
@@ -59,6 +61,6 @@
 
-Insertion d'entités
-  Ce type de requête permet d'insérer de nouvelles entités dans la base. On
-  permettra également la création directe de relations sur les entités
-  nouvellement créées.
+Insertion d'entités
+  Ce type de requête permet d'insérer de nouvelles entités dans la base. On
+  permettra également la création directe de relations sur les entités
+  nouvellement créées.
 
@@ -64,5 +66,5 @@
 
-Mise à jour d'entités, création de relations
-  Ce type de requête permet de mettre à jours des entités existantes dans la base,
-  ou de créer des relations entres des entités existantes.
+Mise à jour d'entités, création de relations
+  Ce type de requête permet de mettre à jours des entités existantes dans la base,
+  ou de créer des relations entres des entités existantes.
 
@@ -68,6 +70,6 @@
 
-Suppression d'entités ou de relation
-  Ce type de requête permet de supprimer des entités et relations existantes dans
+Suppression d'entités ou de relation
+  Ce type de requête permet de supprimer des entités et relations existantes dans
   la base.
 
 
@@ -86,7 +88,7 @@
        Any X WHERE 
        X eid 53 
 
-- *recherche des documents de type bande dessinée, appartenant à syt et disponible*
+- *recherche des documents de type bande dessinée, appartenant à syt et disponible*
   ::
 
        Document X WHERE 
@@ -90,7 +92,7 @@
   ::
 
        Document X WHERE 
-       X occurence_of F, F class C, C name 'Bande dessinée',
+       X occurence_of F, F class C, C name 'Bande dessinée',
        X owned_by U, U login 'syt',
        X available true
 
@@ -94,10 +96,10 @@
        X owned_by U, U login 'syt',
        X available true
 
-- *recherche des personnes travaillant pour eurocopter intêressé par la formation*
+- *recherche des personnes travaillant pour eurocopter intéressé par la formation*
   ::
 
        Personne P WHERE
        P travaille_pour S, S nom 'Eurocopter',
        P interesse_par T, T nom 'formation'
 
@@ -98,13 +100,13 @@
   ::
 
        Personne P WHERE
        P travaille_pour S, S nom 'Eurocopter',
        P interesse_par T, T nom 'formation'
 
-- *recherche des notes de moins de 10 jours écrite par jphc ou ocy*
+- *recherche des notes de moins de 10 jours écrites par jphc ou ocy*
   ::
 
        Note N WHERE
        N ecrit_le D, D day > (today -10), 
        N ecrit_par P, P nom 'jphc' or P nom 'ocy'
 
@@ -105,13 +107,13 @@
   ::
 
        Note N WHERE
        N ecrit_le D, D day > (today -10), 
        N ecrit_par P, P nom 'jphc' or P nom 'ocy'
 
-- *recherche des personnes interessées par la formation ou habitant à Paris*
+- *recherche des personnes intéressées par la formation ou habitant à Paris*
   ::
 
        Personne P WHERE
        (P interesse_par T, T nom 'formation') or
        (P ville 'Paris')
 
@@ -112,12 +114,12 @@
   ::
 
        Personne P WHERE
        (P interesse_par T, T nom 'formation') or
        (P ville 'Paris')
 
-- *Le nom et le prénom de toutes les personnes, triés*
+- *Le nom et le prénom de toutes les personnes*
   ::
 
        Any N, P WHERE
        X is Personne, X nom N, X prenom P
 
@@ -119,14 +121,14 @@
   ::
 
        Any N, P WHERE
        X is Personne, X nom N, X prenom P
 
-  On remarquera que la selection de plusieurs entités force généralement
-  l'utilisation de "Any", car la spécification de type s'applique sinon
-  à toutes les variables séléctionnées. On aurait pu écrire ici 
+  On remarquera que la selection de plusieurs entités force généralement
+  l'utilisation de "Any", car la spécification de type s'applique sinon
+  à toutes les variables séléctionnées. On aurait pu écrire ici 
   ::
 
        String N, P WHERE
        X is Personne, X nom N, X prenom P
 
 
@@ -127,9 +129,9 @@
   ::
 
        String N, P WHERE
        X is Personne, X nom N, X prenom P
 
 
-Insertion d'entités
+Insertion d'entités
 -------------------
 
@@ -134,7 +136,7 @@
 -------------------
 
-- *insertion d'une nouvelle personne nommée 'bidule'*
+- *insertion d'une nouvelle personne nommée 'bidule'*
   ::
 
        INSERT Personne X: X nom 'bidule'
 
@@ -137,9 +139,9 @@
   ::
 
        INSERT Personne X: X nom 'bidule'
 
-- *insertion d'une nouvelle personne nommée 'bidule', d'une autre nommée 'chouette' et d'une relation 'ami' entre eux*
+- *insertion d'une nouvelle personne nommée 'bidule', d'une autre nommée 'chouette' et d'une relation 'ami' entre eux*
   ::
 
        INSERT Personne X, Personne Y: X nom 'bidule', Y nom 'chouette', X ami Y
 
@@ -142,10 +144,10 @@
   ::
 
        INSERT Personne X, Personne Y: X nom 'bidule', Y nom 'chouette', X ami Y
 
-- *insertion d'une nouvelle personne nommée 'bidule' et d'une relation 'ami' avec une personne existante nommée 'chouette'*
+- *insertion d'une nouvelle personne nommée 'bidule' et d'une relation 'ami' avec une personne existante nommée 'chouette'*
   ::
 
        INSERT Personne X: X nom 'bidule', X ami Y WHERE Y nom 'chouette'
 
 
@@ -147,8 +149,8 @@
   ::
 
        INSERT Personne X: X nom 'bidule', X ami Y WHERE Y nom 'chouette'
 
 
-Mise à jour d'entités, création de relations
+Mise à jour d'entités, création de relations
 --------------------------------------------
 
@@ -153,7 +155,7 @@
 --------------------------------------------
 
-- *renommage de la personne nommée 'bidule' en 'toto', avec modification du prénom*
+- *renommage de la personne nommée 'bidule' en 'toto', avec modification du prénom*
   ::
 
        SET X nom 'toto', X prenom 'original' WHERE X is Person, X nom 'bidule'
 
@@ -156,10 +158,10 @@
   ::
 
        SET X nom 'toto', X prenom 'original' WHERE X is Person, X nom 'bidule'
 
-- *insertion d'une relation de type 'connait' entre les objets reliés par la relation de type 'ami'*
+- *insertion d'une relation de type 'connait' entre les objets reliés par la relation de type 'ami'*
   ::
 
        SET X know Y WHERE X ami Y
 
 
@@ -161,8 +163,8 @@
   ::
 
        SET X know Y WHERE X ami Y
 
 
-Suppression d'entités ou de relations
+Suppression d'entités ou de relations
 -------------------------------------
 
@@ -167,7 +169,7 @@
 -------------------------------------
 
-- *supression de la personne nommé 'toto'*
+- *supression de la personne nommé 'toto'*
   ::
 
        DELETE Person X WHERE X nom 'toto'
 
@@ -170,11 +172,11 @@
   ::
 
        DELETE Person X WHERE X nom 'toto'
 
-- *suppression de toutes les relations de type 'ami' partant de la personne nommée 'toto'*
+- *suppression de toutes les relations de type 'ami' partant de la personne nommée 'toto'*
   ::
 
        DELETE X ami Y WHERE X is Person, X nom 'toto'
 
 
 
@@ -175,9 +177,9 @@
   ::
 
        DELETE X ami Y WHERE X is Person, X nom 'toto'
 
 
 
-Définition du langage
+Définition du langage
 =====================
 
@@ -182,4 +184,4 @@
 =====================
 
-Mots clés réservés
+Mots clés réservés
 ------------------
@@ -185,5 +187,5 @@
 ------------------
-Les mots clés ne sont pas sensibles à la casse. 
+Les mots clés ne sont pas sensibles à la casse. 
 
 ::
 
@@ -197,7 +199,7 @@
 Typage
 ------
 
-Au niveau de RQL, on ne fait pas de distinction entre entités et attributs. La
-valeur d'un attribut est considérée comme une entité d'un type particulier (voir
-ci-dessous), lié à une (vrai) entité par une relation du nom de l'attribut.
+Au niveau de RQL, on ne fait pas de distinction entre entités et attributs. La
+valeur d'un attribut est considérée comme une entité d'un type particulier (voir
+ci-dessous), lié à une (vraie) entité par une relation du nom de l'attribut.
 
@@ -203,3 +205,3 @@
 
-Il existe un type spécial **Any**, revenant à ne pas spécifier de type.
+Il existe un type spécial **Any**, revenant à ne pas spécifier de type.
 
@@ -205,4 +207,4 @@
 
-On peut contraindre les types possibles pour une variable à l'aide de la
-relation spéciale **is**.
+On peut contraindre les types possibles pour une variable à l'aide de la
+relation spéciale **is**.
 
@@ -208,8 +210,8 @@
 
-Le(s) type(s) possible(s) pour chaque variable est déduit du schema en
-fonction des contraintes exprimées ci-dessus et à l'aide des relations entre
+Le(s) type(s) possible(s) pour chaque variable est déduit du schema en
+fonction des contraintes exprimées ci-dessus et à l'aide des relations entre
 chaque variable.
 
 Types de bases
 ``````````````
 
@@ -211,11 +213,11 @@
 chaque variable.
 
 Types de bases
 ``````````````
 
-Les types de bases supportés sont les chaines (entre doubles ou simples quotes),
-les nombres entiers ou flottant (le séparateur étant le '.'), les dates et les
-booléens. On s'attend donc à recevoir un schéma dans lequel les types String,
-Int, Float, Date et Boolean sont définis.
+Les types de bases supportés sont les chaines (entre doubles ou simples quotes),
+les nombres entiers ou flottant (le séparateur étant le '.'), les dates et les
+booléens. On s'attend donc à recevoir un schéma dans lequel les types String,
+Int, Float, Date et Boolean sont définis.
 
 
@@ -220,5 +222,5 @@
 
 
-Opérateurs
+Opérateurs
 ----------
 
@@ -223,8 +225,8 @@
 ----------
 
-Opérateurs logiques
+Opérateurs logiques
 ```````````````````
 ::
 
     AND, OR, ','
 
@@ -226,8 +228,8 @@
 ```````````````````
 ::
 
     AND, OR, ','
 
-"," est équivalent à "AND" mais avec la plus petite priorité parmi les
-opérateurs logiques (voir `Priorité des opérateurs`_).
+"," est équivalent à "AND" mais avec la plus petite priorité parmi les
+opérateurs logiques (voir `Priorité des opérateurs`_).
 
@@ -233,7 +235,7 @@
 
-Opérateurs mathématiques
+Opérateurs mathématiques
 ````````````````````````
 ::
 
     +, -, *, /
 
@@ -235,11 +237,11 @@
 ````````````````````````
 ::
 
     +, -, *, /
 
-Opérateurs de comparaison
+Opérateurs de comparaison
 `````````````````````````
 ::
 
     <, <=, >=, >, ~=, IN, LIKE
 
@@ -241,7 +243,7 @@
 `````````````````````````
 ::
 
     <, <=, >=, >, ~=, IN, LIKE
 
-"LIKE" est équivalent à "~="
+"LIKE" est équivalent à "~="
 
@@ -247,5 +249,8 @@
 
-Priorité des opérateurs
+XXX nico: A truc <> 'titi' ne serait-il pas plus pratique que NOT A
+truc 'titi' ?
+
+Priorité des opérateurs
 ```````````````````````
 
 1. '*', '/'
@@ -262,7 +267,7 @@
 Fonctions
 ---------
 
-Fonctions d'aggrégat
+Fonctions d'aggrégat
 ````````````````````
 ::
 
@@ -277,9 +282,9 @@
 
 Grammaire BNF
 -------------
-Les éléments terminaux sont en majuscules, les non-terminaux en minuscule. La
-valeur des éléments terminaux (entre quotes) correspond à une expression
-régulière Python.
+Les éléments terminaux sont en majuscules, les non-terminaux en minuscule. La
+valeur des éléments terminaux (entre quotes) correspond à une expression
+régulière Python.
 :: 
 
     statement ::= (select | delete | insert | update) ';'
@@ -358,12 +363,9 @@
 Tri et groupes
 ``````````````
 
-- pour les requêtes groupées (i.e. avec une clause GROUPBY), toutes les
-  variables sélectionnée doivent être groupées
-
-- pour les requête ordonnées (i.e. avec une clause ORDERBY), toutes les
-  variables ordonnéees doivent être sélectionnées XXX plus vrai, non ?
+- pour les requêtes groupées (i.e. avec une clause GROUPBY), toutes les
+  variables sélectionnées doivent être groupées
 
 - pour grouper ou/et trier sur les attributs on peut faire : "X,L user U, U
   login L GROUPBY L,X ORDERBY L"
 
@@ -366,7 +368,7 @@
 
 - pour grouper ou/et trier sur les attributs on peut faire : "X,L user U, U
   login L GROUPBY L,X ORDERBY L"
 
-- si la méthode de tri (SORT_METHOD) n'est pas précisé, alors le tri est
+- si la méthode de tri (SORT_METHOD) n'est pas précisée, alors le tri est
   ascendant.
 
@@ -371,5 +373,5 @@
   ascendant.
 
-Négation
+Négation
 ````````
 
@@ -374,8 +376,8 @@
 ````````
 
-une requête du type "Document X where not X owned_by U" revient à dire "les
-documents n'ayant pas de relation 'owned_by'". La variable U ne doit être
-utilisée à aucun autre endroit.
+Une requête du type "Document X where not X owned_by U" revient à dire "les
+documents n'ayant pas de relation 'owned_by'". La variable U ne doit être
+utilisée à aucun autre endroit.
 
 
 
@@ -379,6 +381,6 @@
 
 
 
-Implémentation
+Implémentation
 ==============
 
@@ -383,5 +385,5 @@
 ==============
 
-Représentation interne (arbre syntaxique)
+Représentation interne (arbre syntaxique)
 -----------------------------------------
 
@@ -386,5 +388,5 @@
 -----------------------------------------
 
-L'arbre de recherche ne contient pas les variables sélectionnées (i.e. on n'y 
+L'arbre de recherche ne contient pas les variables sélectionnées (i.e. on n'y 
 trouve que ce qui suit le "WHERE").
 
@@ -389,6 +391,6 @@
 trouve que ce qui suit le "WHERE").
 
-L'arbre d'insertion ne contient pas les variables insérée ni les relations 
-définies sur ces variables (i.e. on n'y trouve que ce qui suit le
+L'arbre d'insertion ne contient pas les variables insérées ni les relations 
+définies sur ces variables (i.e. on n'y trouve que ce qui suit le
 "WHERE").
 
@@ -393,5 +395,5 @@
 "WHERE").
 
-L'arbre de suppression ne contient pas les variables ou relations supprimées 
+L'arbre de suppression ne contient pas les variables ou relations supprimées 
 (i.e. on n'y trouve que ce qui suit le "WHERE").
 
@@ -396,6 +398,6 @@
 (i.e. on n'y trouve que ce qui suit le "WHERE").
 
-L'arbre de màj ne contient pas les variables ou relations mises à jour
+L'arbre de mise à jour ne contient pas les variables ou relations mises à jour
 (i.e. on n'y trouve que ce qui suit le "WHERE").
 
 ::
@@ -428,7 +430,7 @@
 Remarques
 ---------
 
-- l'implémentation actuelle ne supporte pas de lier deux relations ayant comme
-  type de relation 'is' avec un OR. Je ne pense pas que la négation ne
-  soit supportée non plus sur ce type de relation (à confirmer).
+- l'implémentation actuelle ne supporte pas de lier deux relations ayant comme
+  type de relation 'is' avec un OR. Je ne pense pas que la négation ne
+  soit supportée non plus sur ce type de relation (à confirmer).
 
@@ -434,5 +436,5 @@
 
-- les relations définissant les variables doivent être à gauche de celles les
+- les relations définissant les variables doivent être à gauche de celles les
   utilisant. Par exemple ::
 
     Point P where P abs X, P ord Y, P value X+Y
@@ -459,9 +461,9 @@
 
 et certainement d'autres choses...
 
-Un inconvénient est que pour utiliser ce langage il faut bien connaitre le
-schéma utilisé (avec les vrais noms de relations et d'entités, pas ceux affichés
-dans l'interface utilisateur). D'un autre coté, on peut pas vraiment contourner
+Un inconvénient est que pour utiliser ce langage il faut bien connaitre le
+schéma utilisé (avec les vrais noms de relations et d'entités, pas ceux affichés
+dans l'interface utilisateur). D'un autre coté, on peut pas vraiment contourner
 cela, et c'est le boulot d'une interface utilisateur de cacher le RQL.
 
 
@@ -465,6 +467,6 @@
 cela, et c'est le boulot d'une interface utilisateur de cacher le RQL.
 
 
-A réfléchir
------------
+Sujets de réflexion
+-------------------
 
@@ -470,6 +472,6 @@
 
-Il serait pratique de pouvoir exprimer dans le schéma des correspondances de
-relations::
+Il serait pratique de pouvoir exprimer dans le schema des correspondances de
+relations (règles non récursives)::
 
     Document class Type <-> Document occurence_of Fiche class Type
     Fiche class Type    <-> Fiche collection Collection class Type
@@ -477,7 +479,7 @@
 Ainsi 1. devient::
 
     Document X where 
-    X class C, C name 'Bande dessinée',
+    X class C, C name 'Bande dessinée',
     X owned_by U, U login 'syt',
     X available true
 
@@ -481,5 +483,5 @@
     X owned_by U, U login 'syt',
     X available true
 
-Je ne suis cependant pas sûr qu'il faille gérer ça au niveau de RQL...
+Je ne suis cependant pas sûr qu'il faille gérer ça au niveau de RQL...
 
@@ -485,5 +487,5 @@
 
-Il faudrait aussi une relation spéciale 'anonyme'.
+Il faudrait aussi une relation spéciale 'anonyme'.
 
 
 
diff --git a/doc/tutoriel_fr.txt b/doc/tutoriel_fr.txt
index 1db3a36561cfb050df246511e972ea406ac3cc30_ZG9jL3R1dG9yaWVsX2ZyLnR4dA==..8c2d1e885e6b95e9f27a69411f7e2dc50d01c074_ZG9jL3R1dG9yaWVsX2ZyLnR4dA== 100644
--- a/doc/tutoriel_fr.txt
+++ b/doc/tutoriel_fr.txt
@@ -1,3 +1,5 @@
+.. -*- coding: utf-8 -*-
+
 ============================================
 Tutoriel "Relation Query Language" (Hercule)
 ============================================
@@ -9,8 +11,8 @@
 
 Schema
 ------
-Nous supposerons dans la suite de ce document que le schéma de
-l'application Erudi est le suivant. Les différentes entités
+Nous supposerons dans la suite de ce document que le schéma de
+l'application est le suivant. Les différentes entités
 disponibles sont :
 
 :Personne:
@@ -69,6 +71,6 @@
 	Societe concerne_par Affaire
 
 
-Toutes les entités ont un attribut supplémentaire 'eid', permettant
-d'identifier chaque instance de manière unique.
+Toutes les entités ont un attribut supplémentaire 'eid', permettant
+d'identifier chaque instance de manière unique.
 
@@ -74,5 +76,5 @@
 
-De plus si les métadonnées sont utilisées, vous disposez pour chaque
-type d'entité des relations "creation_date", "modification_date" dont
-l'objet est une entité de type Dates (il y a un "s" pour ne pas avoir
+De plus si les métadonnées sont utilisées, vous disposez pour chaque
+type d'entité des relations "creation_date", "modification_date" dont
+l'objet est une entité de type Dates (il y a un "s" pour ne pas avoir
 de conflit avec le type de base "date"), ainsi que de la relation
@@ -78,6 +80,6 @@
 de conflit avec le type de base "date"), ainsi que de la relation
-"owned_by" dont l'objet est une entité de type Euser. Les schemas
-standards de ces types d'entités sont les suivants :
+"owned_by" dont l'objet est une entité de type Euser. Les schemas
+standards de ces types d'entités sont les suivants :
 
 :Dates:
 
@@ -99,7 +101,7 @@
 	web    	  varchar(128)
 	birthday  date
 
-Enfin, il existe la relation spéciale "is" permettant de spécifier le
+Enfin, il existe la relation spéciale "is" permettant de spécifier le
 type d'une variable. 
 
 
@@ -114,10 +116,10 @@
    Any X WHERE X is Personne ;
 
 
-.1 *La societé nommé Logilab*
+.1 *La societé nommé Logilab*
 
 ::
 
    Societe S WHERE S nom 'Logilab' ;
 
 
@@ -118,10 +120,10 @@
 
 ::
 
    Societe S WHERE S nom 'Logilab' ;
 
 
-.2 *Tous les objets ayant un attribut nom commençant par 'Log'*
+.2 *Tous les objets ayant un attribut nom commençant par 'Log'*
 
 ::
 
@@ -129,7 +131,7 @@
    ou 
    Any S WHERE S nom ~= 'Log%' ;
 
-Cette requête peut renvoyer des objets de type personne et de type
-société.
+Cette requête peut renvoyer des objets de type personne et de type
+société.
 
 
@@ -134,6 +136,6 @@
 
 
-.3 *Toutes les personnes travaillant pour la société nommé Logilab*
+.3 *Toutes les personnes travaillant pour la société nommé Logilab*
    
 ::
    Personne P WHERE P travaille_pour S, S nom "Logilab" ;
@@ -142,7 +144,7 @@
    ou
    Personne P WHERE P travaille_pour "Logilab" ;
 
-La dernière forme fonctionne car "nom" est le premier attribut des
-entités de type "Société"
+La dernière forme fonctionne car "nom" est le premier attribut des
+entités de type "Société" XXX nico: toujours vrai ?
 
 
@@ -147,6 +149,6 @@
 
 
-.4 *Les societés nommées Caesium ou Logilab*
+.4 *Les societés nommées Caesium ou Logilab*
 
 ::
 
@@ -155,7 +157,7 @@
    Societe S WHERE S nom 'Logilab' OR S nom 'Caesium' ;
 
 
-.5 *Toutes les societés sauf celles nommées Caesium ou Logilab*
+.5 *Toutes les societés sauf celles nommées Caesium ou Logilab*
 
 ::
 
@@ -164,10 +166,10 @@
    Societe S WHERE NOT S nom 'Logilab' AND NOT S nom 'Caesium' ;
 
 
-.6 *Les objets évalués par la note d'identifiant 43*
+.6 *Les objets évalués par la note d'identifiant 43*
 
 ::
 
    Any X WHERE X evaluee_par N, N eid 43 ;
 
 
@@ -168,13 +170,13 @@
 
 ::
 
    Any X WHERE X evaluee_par N, N eid 43 ;
 
 
-.7 *Toutes les personnes triés par date de naissance dans l'ordre antechronologique*
+.7 *Toutes les personnes triés par date de naissance dans l'ordre antechronologique*
 
 ::
    
    Any X WHERE X is Personne, X datenaiss D ORDERBY D DESC ;
 
 
@@ -175,12 +177,12 @@
 
 ::
    
    Any X WHERE X is Personne, X datenaiss D ORDERBY D DESC ;
 
 
-.8 *Toutes les personnes groupées par leur société*
+.8 *Toutes les personnes groupées par leur société*
 
 ::
    
    Personne X WHERE X travaille_pour S GROUPBY S,X ;
 
@@ -182,10 +184,9 @@
 
 ::
    
    Personne X WHERE X travaille_pour S GROUPBY S,X ;
 
-On note qu'il faut définir une variable pour s'en servir pour le
-groupage. De plus les variables séléctionnée doivent être groupée
-(mais les variables groupées ne doivent pas forcément être sélectionnées).
-
+On note qu'il faut définir une variable pour s'en servir pour le
+groupage. De plus les variables séléctionnées doivent être groupées
+(mais les variables groupées ne doivent pas forcément être sélectionnées).
 
@@ -191,2 +192,3 @@
 
+XXX nico: c'est peu utile comme requête
    
@@ -192,3 +194,3 @@
    
-Exemples avancés
+Exemples avancés
 ----------------
@@ -194,8 +196,8 @@
 ----------------
-.0 *Toutes les personnes dont le champ nom n'est pas spécifié (i.e NULL)*
+.0 *Toutes les personnes dont le champ nom n'est pas spécifié (i.e NULL)*
 
 ::
 
    Personne P WHERE P nom NULL ;
 
 
@@ -196,13 +198,13 @@
 
 ::
 
    Personne P WHERE P nom NULL ;
 
 
-.1 *Toutes les personnes ne travaillant pour aucune société*
+.1 *Toutes les personnes qui ne travaillent pour aucune société*
 
 ::
 
    Personne P WHERE NOT p travaille_pour S ;
 
 
@@ -203,10 +205,10 @@
 
 ::
 
    Personne P WHERE NOT p travaille_pour S ;
 
 
-.2 *Toutes les sociétés où la personne nommée toto ne travaille pas*
+.2 *Toutes les sociétés où la personne nommée toto ne travaille pas*
 
 ::
 
@@ -215,10 +217,10 @@
    Societe S WHERE NOT 'toto' travaille_pour S ;
 
 
-.3 *Toutes les entités ayant été modifiées entre aujourd'hui et hier*
+.3 *Toutes les entités ayant été modifiées entre aujourd'hui et hier*
 
 ::
 
    Any X WHERE X modification_date <= today, X modification_date >= today - 1
 
 
@@ -219,10 +221,10 @@
 
 ::
 
    Any X WHERE X modification_date <= today, X modification_date >= today - 1
 
 
-.4 *Toutes les notes n'ayant pas de type et à effectuer dans les 7 jours, triées par date*
+.4 *Toutes les notes n'ayant pas de type et à effectuer dans les 7 jours, triées par date*
 
 ::