diff --git a/doc/userdoc.org b/doc/userdoc.org
index 814f71d8109338f58a1b01e3a5e885f7ecf8bea0..730486dd17ed76e0a30e2a935807ea36228317d2 100644
--- a/doc/userdoc.org
+++ b/doc/userdoc.org
@@ -74,10 +74,10 @@ mesh nodes according to a user-defined vector field $T: \mathbb{R}^2
 
   let pi:R, pi = acos(-1);
   let theta:R^2 -> R, x -> 0.5*pi*(x[0]*x[0]-1)*(x[1]*x[1]-1);
-  let M:R^2 -> R^2x2, x -> (cos(theta(x)), -sin(theta(x)),
-                            sin(theta(x)),  cos(theta(x)));
+  let M:R^2 -> R^2x2, x -> [[cos(theta(x)), -sin(theta(x))],
+                            [sin(theta(x)),  cos(theta(x))]];
   let T: R^2 -> R^2, x -> x + M(x)*x;
-  let m:mesh, m = cartesian2dMesh((-1,-1), (1,1), (20,20));
+  let m:mesh, m = cartesian2dMesh([-1,-1], [1,1], (20,20));
 
   m = transform(m, T);
 
@@ -856,10 +856,10 @@ are sorted by type of left hand side variable.
   | ~R^2~                                         |
   | ~0~  (special value)                          |
   | list of 2 scalar (~B~, ~N~, ~Z~ or ~R~) expressions |
-  An example of initialization using a list or the special value ~0~ is
+  An example of initialization using an $\mathbb{R}^2$ value or the special value ~0~ is
   #+NAME: affectation-to-R2-from-list
   #+BEGIN_SRC pugs :exports both :results output
-    let u:R^2, u = (-3, 2.5);
+    let u:R^2, u = [-3, 2.5];
     let z:R^2, z = 0;
     cout << "u = " << u << "\n";
     cout << "z = " << z << "\n";
@@ -881,10 +881,10 @@ are sorted by type of left hand side variable.
   | ~R^3~                                         |
   | ~0~  (special value)                          |
   | list of 3 scalar (~B~, ~N~, ~Z~ or ~R~) expressions |
-  An example of initialization using a list is
+  An example of initialization is
   #+NAME: affectation-to-R3-from-list
   #+BEGIN_SRC pugs :exports both :results output
-    let u:R^3, u = (-3, 2.5, 1E-2);
+    let u:R^3, u = [-3, 2.5, 1E-2];
     let z:R^3, z = 0;
     cout << "u = " << u << "\n";
     cout << "z = " << z << "\n";
@@ -907,11 +907,12 @@ are sorted by type of left hand side variable.
   | ~R^2x2~                                       |
   | ~0~  (special value)                          |
   | list of 4 scalar (~B~, ~N~, ~Z~ or ~R~) expressions |
-  An example of initialization using a list or the special value ~0~ is
+  An example of initialization using an $\mathbb{R}^{2\times2}$ value or
+  the special value ~0~ is
   #+NAME: affectation-to-R2x2-from-list
   #+BEGIN_SRC pugs :exports both :results output
-    let u:R^2x2, u = (-3, 2.5,
-                       4, 1.2);
+    let u:R^2x2, u = [[-3, 2.5],
+                      [ 4, 1.2]];
     let z:R^2x2, z = 0;
     cout << "u = " << u << "\n";
     cout << "z = " << z << "\n";
@@ -925,12 +926,12 @@ are sorted by type of left hand side variable.
   | ~R^3x3~                                       |
   | ~0~  (special value)                          |
   | list of 9 scalar (~B~, ~N~, ~Z~ or ~R~) expressions |
-  An example of initialization using a list is
+  An example of initialization is
   #+NAME: affectation-to-R3x3-from-list
   #+BEGIN_SRC pugs :exports both :results output
-    let u:R^3x3, u = (-3, 2.5, 1E-2,
-                       2, 1.7,   -2,
-                     1.2,   4,  2.3);
+    let u:R^3x3, u = [[ -3, 2.5, 1E-2],
+                      [  2, 1.7,   -2],
+                      [1.2,   4,  2.3]];
     let z:R^3x3, z = 0;
     cout << "u = " << u << "\n";
     cout << "z = " << z << "\n";
@@ -1256,8 +1257,8 @@ constructions.
   operators. Their syntax is the following.
 #+NAME: Rd-Rdxd-access-operator
 #+BEGIN_SRC pugs :exports both :results output
-  let x:R^2,   x = (1,2);
-  let A:R^3x3, A = (1,2,3,4,5,6,7,8,9);
+  let x:R^2,   x = [1,2];
+  let A:R^3x3, A = [[1,2,3],[4,5,6],[7,8,9]];
 
   cout << "x[0] = " << x[0] << "\nx[1] = " << x[1] << "\n";
   cout << "A[0,0] = " << A[0,0] << "\nA[2,1] = " << A[2,1] << "\n";
@@ -1614,9 +1615,9 @@ illustrate this, let us consider the following example.
 #+BEGIN_SRC pugs :exports both
   import mesh;
 
-  let m1:mesh, m1 = cartesian2dMesh(0, (1,1), (10,10));
+  let m1:mesh, m1 = cartesian2dMesh(0, [1,1], (10,10));
   let m2:mesh, m2 = m1;
-  let m3:mesh, m3 = cartesian2dMesh(0, (1,1), (10,10));
+  let m3:mesh, m3 = cartesian2dMesh(0, [1,1], (10,10));
 
   m3 = m1;
 #+END_SRC
@@ -1653,8 +1654,8 @@ Let us provide an example to fix ideas.
 #+NAME: compound-declaration
 #+BEGIN_SRC pugs :exports both :results output
   let (A,x,n): R^2x2*R^3*N;
-  A = (1,2,3,4);
-  x = (2,4,6);
+  A = [[1,2],[3,4]];
+  x = [2,4,6];
   n = 2;
 
   cout << "A = " << A << "\nx = " << x << "\nn = " << n << "\n";
@@ -1676,7 +1677,7 @@ different variables.
 One can also use the following definition instruction
 #+NAME: compound-definition
 #+BEGIN_SRC pugs :exports both :results output
-  let (A,x,n): R^2x2*R^3*N, (A,x,n) = ((1,2,3,4), (2,4,6), 2);
+  let (A,x,n): R^2x2*R^3*N, (A,x,n) = ([[1,2],[3,4]], [2,4,6], 2);
 
   cout << "A = " << A << "\nx = " << x << "\nn = " << n << "\n";
 #+END_SRC
@@ -1721,7 +1722,7 @@ example.
   let x: R^3;
   let n: N;
 
-  (A,x,n) = ((1,2,3,4), (2,4,6), 2);
+  (A,x,n) = ([[1,2],[3,4]], [2,4,6], 2);
 
   cout << "A = " << A << "\nx = " << x << "\nn = " << n << "\n";
 #+END_SRC
@@ -1772,7 +1773,7 @@ Executing this code, one gets
 The definition syntax is also possible.
 #+NAME: tuple-definition
 #+BEGIN_SRC pugs :exports both :results output
-  let x:(R^2), x = ((1,2),(3.4,2), 0, (2,3));
+  let x:(R^2), x = ([1,2],[3.4,2], 0, [2,3]);
   cout << x << "\n";
 #+END_SRC
 This code gives
@@ -2130,17 +2131,17 @@ Using compound types as input and output, one can write
   let f : R^2x2*R*string -> R*string*R^3x3,
           (A,x,s) -> (x*A[0,0]*A[1,1]-A[1,0],
                       A+","+x+","+s,
-                      (A[0,0], A[0,1], 0,
-                       A[1,0], A[1,1], 0,
-                            0,      0, x));
+                      [[A[0,0], A[0,1], 0],
+                       [A[1,0], A[1,1], 0],
+                       [     0,      0, x]]);
   let x : R, x=0;
   let s : string, s= "";
   let A : R^3x3, A = 0;
-  (x,s,A) = f((1,2,3,4), 2.3, "foo");
+  (x,s,A) = f([[1,2],[3,4]], 2.3, "foo");
   cout << "x = " << x
        << "\ns = " << s
        << "\nA = " << A << "\n";
-  let (y,t,A2):R*string*R^3x3, (y,t,A2) = f((3,1,4,2), -5.2, "bar");
+  let (y,t,A2):R*string*R^3x3, (y,t,A2) = f([[3,1],[4,2]], -5.2, "bar");
   cout << "y = " << y
        << "\nt = " << t
        << "\nA2 = " << A2 << "\n";
@@ -2201,7 +2202,7 @@ function expressions.
   let minus: R -> R, x -> -(x<0)*x;
 
   let pm : R -> R*R, x -> (plus(x), minus(x));
-  let toR2: R*R -> R^2, (x,y) -> (x,y);
+  let toR2: R*R -> R^2, (x,y) -> [x,y];
 
   cout << "pm(2) = " << toR2(pm(2)) << " pm(-3) = " << toR2(pm(-3)) << "\n";
 #+END_SRC