diff --git a/_oasis b/_oasis
index e68bde24bc80586eb0c88d4b5352400298b952b3..2e5d5805e3f9bbd152a1e6a3eb4ea65d0ae2dd53 100644
--- a/_oasis
+++ b/_oasis
@@ -1,6 +1,6 @@
 OASISFormat: 0.4
 Name:        lustre-v6
-Version:     1.691
+Version:     1.692
 Synopsis:    The Lustre V6 Verimag compiler
 Description: This package contains:
    (1) lus2lic: the (current) name of the compiler (and interpreter via -exec).
diff --git a/arduino/led_puzlle/doc/puzzle.org b/arduino/led_puzlle/doc/puzzle.org
index ae307d8ea55c4f838d66d902fe493cd549736511..92f4391034f09719dc20f47866d26fbf9f33a9cd 100644
--- a/arduino/led_puzlle/doc/puzzle.org
+++ b/arduino/led_puzlle/doc/puzzle.org
@@ -8,28 +8,63 @@
 #+DATE:  Laboratoire Verimag -- Faites de la science !
 
 
-Du Lustre pour des jolies leds
+Du Lustre aux jolies leds
 
-* Introduction
+file:arduino.jpg
 
-Au  laboratoire   =Verimag=,  on  cherche  à   aider  les  ingénieurs
+* Introduction
+ 
+Au  laboratoire   =Verimag=,  nous   cherchons  à   aider  les  ingénieurs
 informaticiens à _prouver automatiquement_ que leurs programmes sont
 _corrects_.
 
-- C'est important, en particulier pour les *systèmes embarqués*.
-- Mais c'est difficile (explosion combinatoire ; $2^{64}>18*10^{15}$).
-
-Plusieurs approches :
-- *Langages* de programmation (empêcher les programmeurs de faire des erreurs)
-- *Analyse de programme* 
-- Tests automatisés
-
-Nous allons embarquer des puzzles écrits en =Lustre= sur un =Arduino=
-
-file:arduino.jpg
+- La correction des programmes est  cruciale, en particulier pour les
+  *systèmes embarqués*, car des vies sont souvent en jeu.
+- Mais elle est difficile à cause de *l'explosion combinatoire*.  Une
+  bonne illustration  de ce  phénoméne est  donnée par  l'échiquer de
+  Sissa, comportant 1 grain  de riz sur case 1, 2  grains sur la case
+  2, 4 sur la case 3, 8 sur la case 4, etc. Un tel échiquier comporte
+  $2^{64}-1$ grains  de riz,  c'est à  dire plus  de 18\nbsp{}milliards de
+  grains, soit l'équivalent de 1000 ans de production mondiale de riz
+  actuellement. Or  un programme de  64 cases  (ou bits) est  un 
+  petit programme.
+
+Plusieurs approches sont possibles pour faire face à cette difficulté.
+Au laboratoire Verimag, les axes de recherche visant à résoudre ce type 
+de  problèmes concernent :
+
+- la  conception de  *Langages* de  programmation   empêchant les
+  programmeurs de faire certaines  erreurs;
+- l'*Analyse   de  programmes*   :   conception  d'algorithmes   (des
+  programmes aussi)  qui essaient de *prouver*  qu'un autre programme
+  est « *correct* ».
+- l'automatisation des *tests* :  conception d'algorithmes qui essaient
+  de prouver qu'un programme n'est *pas* correct.
+
+Pour illustrer tous ces axes de recherche, nous proposons une petite démonstration
+permettant de montrer
+1. quelques exemples de programmes écrit en Lustre, un langage inventé
+   au  laboratoire  et  conçu  pour  mettre  en  oeuvre  des  systèmes
+   embarqués critiques ;
+2. comment un  tel programme peut-être embarqué sur  un système (ici,
+   une carte =Arduino=) ;
+3. comment prouver automatiquement des propriétés sur ces programmes ;
+4. comment tester automatiquement ces programmes.
+
+Il s'agit  donc de valider  est donc  un petit système,  composé d'un
+programme  Lustre et  d'une  carte =Arduino=,  comportant 2  entrées,
+contrôllées par  un bouton  rouge et  un bouton  bleu, et  5 sorties,
+représentées par 5 leds.
+
+
+La propriété de sureté que l'on veut vérifier est « il est impossible
+d'allumer les 5  leds ».  Pour chaque programme  qu'on embarquera sur
+la carte, la question sera donc 
+de  savoir s'il est possible d'allumer les
+5 leds (signifiant qu'il y a  un problème) en jouant sur les entrées.
+Nous  montreront ensuite  comment des  outils peuvent  automatiser la
+preuve de correction ou de non correction.
 
-L'objectif de ces  petits puzzles programmés en  Lustre est d'allumer
-toutes les lampes (led) à l'aide de 2 boutons : un rouge, et un bleu.
 
 * Puzzle 1
 
diff --git a/arduino/led_puzlle/doc/puzzle.pdf b/arduino/led_puzlle/doc/puzzle.pdf
index 24d8a915fd70ce922530a1fed0b948259f7c5650..f0998096eba733bf4d2569df943c0d5e7b4a062a 100644
Binary files a/arduino/led_puzlle/doc/puzzle.pdf and b/arduino/led_puzlle/doc/puzzle.pdf differ
diff --git a/src/lv6version.ml b/src/lv6version.ml
index 787aeb9880431ed70a587921814828df2a25c985..3ce1895e510cb8d34144c02e4f622122ef32b086 100644
--- a/src/lv6version.ml
+++ b/src/lv6version.ml
@@ -1,7 +1,7 @@
 (** Automatically generated from Makefile *) 
 let tool = "lus2lic"
 let branch = "master"
-let commit = "691"
-let sha_1 = "4b986d0e2347825949ec0bb88100d125d46d14fd"
+let commit = "692"
+let sha_1 = "1adfcf741e7130599563f6c5667e829f5efad671"
 let str = (branch ^ "." ^ commit ^ " (" ^ sha_1 ^ ")")
 let maintainer = "jahier@imag.fr"
diff --git a/src/soc2c.ml b/src/soc2c.ml
index 4947ca6446f046d53b45f57c81c0131cd6a8e33d..cf62cccbf254f21507a6181a864541c74f2aeec3 100644
--- a/src/soc2c.ml
+++ b/src/soc2c.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 05/05/2017 (at 17:04) by Erwan Jahier> *)
+(* Time-stamp: <modified the 01/06/2017 (at 16:12) by Erwan Jahier> *)
 
 
 (* let put (os: out_channel) (fmt:('a, unit, string, unit) format4) : 'a = *)
@@ -901,13 +901,15 @@ typedef float _float;
 #define _true 1
 #endif
 // end of _SOC2C_PREDEF_TYPES
-" ^ (typedef_all licprg stbl main_soc )
-  ^ (if needs_hfile then "#include \""^ base ^"_ext.h\"" else "")^
-"// User typedef 
+// User typedef 
 #ifndef _"^base^"_TYPES
 #define _"^base^"_TYPES\n");
     output_string types_h_oc (user_typedef licprg);
-    output_string types_h_oc ("#endif // enf of  _"^base^"_TYPES\n");
+    output_string types_h_oc ("#endif // enf of  _"^base^"_TYPES
+"
+  ^ (typedef_all licprg stbl main_soc )
+  ^ (if needs_hfile then "#include \""^ base ^"_ext.h\"" else ""));
+   
     try
     let putc s = output_string occ s in
     let puth s = output_string och s in
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 8d5ffc32d90a3ea8a882557cdab1b79cf2109ce4..ed8918d8593bc795e2ee93691df87e61636b9ce2 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,5 +1,5 @@
 ==> lus2lic0.sum <==
-Test Run By jahier on Fri May  5 17:11:23 
+Test Run By jahier on Thu Jun  1 16:16:10 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic0 tests ===
@@ -64,7 +64,7 @@ XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/lecte
 XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/s.lus
 
 ==> lus2lic1.sum <==
-Test Run By jahier on Fri May  5 17:11:25 
+Test Run By jahier on Thu Jun  1 16:16:11 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic1 tests ===
@@ -97,7 +97,8 @@ PASS: ./lus2lic  {-2c Gyroscope.lus -n Gyroscope}
 PASS: sh Gyroscope.sh 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c Gyroscope.lus  {}
 PASS: ./lus2lic  {-2c Gyroscope2.lus -n Gyroscope2}
-FAIL: Check that the generated C code compiles  : sh Gyroscope2.sh 
+PASS: sh Gyroscope2.sh 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c Gyroscope2.lus  {}
 PASS: ./lus2lic  {-2c aa.lus -n aa}
 PASS: sh aa.sh 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c aa.lus  {}
@@ -271,7 +272,8 @@ PASS: sh fresh_name.sh
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c fresh_name.lus  {}
 PASS: ./lus2lic  {-2c func_with_body.lus -n func_with_body}
 PASS: ./lus2lic  {-2c hanane.lus -n hanane}
-FAIL: Check that the generated C code compiles  : sh hanane.sh 
+PASS: sh hanane.sh 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c hanane.lus  {}
 PASS: ./lus2lic  {-2c heater_control.lus -n heater_control}
 PASS: sh heater_control.sh 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c heater_control.lus  {}
@@ -370,7 +372,8 @@ PASS: ./lus2lic  {-2c modes3x2_v2.lus -n modes3x2_v2}
 PASS: sh modes3x2_v2.sh 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c modes3x2_v2.lus  {}
 PASS: ./lus2lic  {-2c modes3x2_v3.lus -n modes3x2_v3}
-FAIL: Check that the generated C code compiles  : sh modes3x2_v3.sh 
+PASS: sh modes3x2_v3.sh 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c modes3x2_v3.lus  {}
 PASS: ./lus2lic  {-2c modes3x2_v4.lus -n modes3x2_v4}
 PASS: ./lus2lic  {-2c mouse.lus -n mouse}
 PASS: sh mouse.sh 
@@ -395,7 +398,7 @@ PASS: sh multipar.sh
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus  {}
 
 ==> lus2lic2.sum <==
-Test Run By jahier on Fri May  5 17:12:31 
+Test Run By jahier on Thu Jun  1 16:17:05 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic2 tests ===
@@ -735,7 +738,7 @@ PASS: sh zzz2.sh
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus  {}
 
 ==> lus2lic3.sum <==
-Test Run By jahier on Fri May  5 17:13:41 
+Test Run By jahier on Thu Jun  1 16:18:03 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic3 tests ===
@@ -1240,7 +1243,7 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {}
 
 
 ==> lus2lic4.sum <==
-Test Run By jahier on Fri May  5 17:15:38 
+Test Run By jahier on Thu Jun  1 16:19:48 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic4 tests ===
@@ -1732,8 +1735,8 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 
 		=== lus2lic1 Summary ===
 
-# of expected passes		311
-# of unexpected failures	8
+# of expected passes		317
+# of unexpected failures	5
 
 ==> lus2lic2.sum <==
 
@@ -1756,15 +1759,15 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 # of expected passes		465
 # of unexpected failures	6
 ===============================
-# Total number of failures: 26
-lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 66 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 70 seconds
-lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 117 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 63 seconds
+# Total number of failures: 23
+lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 53 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 58 seconds
+lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 105 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 57 seconds
 * Ref time: 
-0.06user 0.01system 5:17.88elapsed 0%CPU (0avgtext+0avgdata 5564maxresident)k
-0inputs+0outputs (0major+6163minor)pagefaults 0swaps
+0.04user 0.02system 4:35.78elapsed 0%CPU (0avgtext+0avgdata 5672maxresident)k
+64inputs+0outputs (0major+6088minor)pagefaults 0swaps
 * Quick time (-j 4):
-0.05user 0.02system 2:08.66elapsed 0%CPU (0avgtext+0avgdata 5700maxresident)k
-160inputs+0outputs (0major+6197minor)pagefaults 0swaps
+0.04user 0.04system 2:28.15elapsed 0%CPU (0avgtext+0avgdata 5660maxresident)k
+160inputs+0outputs (0major+6123minor)pagefaults 0swaps