diff --git a/.gitignore b/.gitignore
index dc7e4db4061354fdd8c4fc129a1e7cd2a5666bce..43ca35bc70e55830ac8e06094c49298ac7dcbe1b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,14 @@ release*
 *.lus.tex
 *.res
 *.ps
+*.exec
+*.save
+*.dro
+*.rif
+*.cov
+*.gp
+*.lesar
+*.sum
 *.annot
 *gz
 src/version.ml
@@ -55,7 +63,6 @@ lus2lic-types.pdf
 lus2lic.pdf
 *.tex
 ocamldoc
-test/*
 _build/
 main.native
 myocamlbuild.ml
diff --git a/src/genOcamlGlue.ml b/src/genOcamlGlue.ml
index 4f1d7ab08b0da9890af5cbe8e49b123bbdf0f8f1..d9987d744d9613b2a0f07ad632e582e24eafe13f 100644
--- a/src/genOcamlGlue.ml
+++ b/src/genOcamlGlue.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 14/08/2014 (at 17:07) by Erwan Jahier> *)
+(* Time-stamp: <modified the 18/06/2015 (at 15:10) by Erwan Jahier> *)
 
 (* generate ocaml glue code that makes it possible to call lus2lic
    from ocaml with the current set of arguments (with Lus2licRun.make).
@@ -20,7 +20,7 @@ let (f: string array -> Lv6MainArgs.t -> unit) =
     in
     let args_str = "\"" ^ (String.concat "\";\"" args) ^"\"" in
     let oc = open_out (outfile)  in
-    Lv6util.dump_entete oc;
+    LicDump.dump_entete oc;
     Printf.fprintf oc "
 let plugin = 
   let args = Array.of_list [%s] in
diff --git a/src/licDump.ml b/src/licDump.ml
index 7eabf5c47f868a48431c8d5909ad0c2c83e1a27f..a704c47b300c7f7dec4bf527cb279cadaea41dda 100644
--- a/src/licDump.ml
+++ b/src/licDump.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/03/2015 (at 14:26) by Erwan Jahier> *)
+(* Time-stamp: <modified the 18/06/2015 (at 15:07) by Erwan Jahier> *)
 
 open Lv6errors
 open Printf
@@ -24,6 +24,11 @@ let (dump_long : Lv6Id.long -> string) = fun x ->
 
 (******************************************************************************)    
 
+let (dump_entete : out_channel -> unit) =
+ fun oc -> if global_opt.kcg then 
+     (Lv6util.entete oc "/*" "*/") 
+   else 
+     (Lv6util.entete oc "(*" "*)")  
 
 (******************************************************************************)    
 let  (get_rank : 'a -> 'a list -> int) =
diff --git a/src/licPrg.ml b/src/licPrg.ml
index c7f0fb8f00c42412051d49649fafc2a774d417cd..c79fb4723122ea29c4d54bd42afba33c0b35089c 100644
--- a/src/licPrg.ml
+++ b/src/licPrg.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 03/03/2015 (at 10:42) by Erwan Jahier> *)
+(* Time-stamp: <modified the 18/06/2015 (at 15:07) by Erwan Jahier> *)
 open Lv6MainArgs
 
 module ItemKeyMap = struct
@@ -117,7 +117,7 @@ let del_node (k:Lic.node_key) (prg:t) : t =
 
 exception Print_me of Lic.node_exp
 let to_file (opt: Lv6MainArgs.t) (this:t) (main_node: Lv6Id.idref option) = 
-  Lv6util.dump_entete opt.Lv6MainArgs.oc;
+  LicDump.dump_entete opt.Lv6MainArgs.oc;
   (* On imprime dans l'ordre du iter, donc pas terrible ???
   *)
   ItemKeyMap.iter
diff --git a/src/lus2licRun.ml b/src/lus2licRun.ml
index 059f0a107ac7124116ab93cedcc328a3b7d077c6..86869e294d5fa4d2fc1f449613c8dff0c5788559 100644
--- a/src/lus2licRun.ml
+++ b/src/lus2licRun.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 27/02/2015 (at 10:04) by Erwan Jahier> *)
+(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *)
 (*-----------------------------------------------------------------------
 ** Copyright (C) - Verimag.
 *)
@@ -51,7 +51,7 @@ let make argv =
   in
   let (vntl_i:Data.vntl) =  soc_inputs in
   let (vntl_o:Data.vntl) =  soc_outputs in
-(*   Lv6util.dump_entete oc; *)
+(*   LicDump.dump_entete oc; *)
 (*   RifIO.write_interface oc vntl_i vntl_o None None; *)
 (*   RifIO.flush oc; *)
 
diff --git a/src/lustre-v6.mldylib b/src/lustre-v6.mldylib
new file mode 100644
index 0000000000000000000000000000000000000000..70b1ee4bb11c079508442265a106009bea539a49
--- /dev/null
+++ b/src/lustre-v6.mldylib
@@ -0,0 +1,63 @@
+# OASIS_START
+# DO NOT EDIT (digest: 702371850d29477bd775b51a95b16417)
+Lus2licRun
+SocExecValue
+SocUtils
+Lv6util
+Lv6version
+Lv6errors
+Lxm
+Lv6MainArgs
+Verbose
+Soc
+SocPredef
+Lv6Id
+SocExec
+SocExecEvalPredef
+Compile
+AstTab
+AstTabSymbol
+AstInstanciateModel
+Lv6parserUtils
+AstV6
+FilenameExtras
+LicTab
+LicDump
+AstPredef
+Lic
+AstCore
+FreshName
+IdSolver
+EvalConst
+LicEvalConst
+LicEvalType
+UnifyType
+Ast2lic
+AstV6Dump
+EvalClock
+UnifyClock
+LicEvalClock
+EvalType
+LicPrg
+LicMetaOp
+L2lCheckOutputs
+Misc
+L2lRmPoly
+L2lExpandMetaOp
+L2lSplit
+L2lExpandNodes
+L2lExpandArrays
+L2lCheckLoops
+L2lCheckMemSafe
+L2lOptimIte
+Lv6lexer
+Lv6parser
+AstRecognizePredef
+Lic2soc
+Action
+ActionsDeps
+SocVar
+Lus2licRun
+SortActions
+SortActionsExpe
+# OASIS_STOP
diff --git a/src/lustre-v6.mllib b/src/lustre-v6.mllib
new file mode 100644
index 0000000000000000000000000000000000000000..70b1ee4bb11c079508442265a106009bea539a49
--- /dev/null
+++ b/src/lustre-v6.mllib
@@ -0,0 +1,63 @@
+# OASIS_START
+# DO NOT EDIT (digest: 702371850d29477bd775b51a95b16417)
+Lus2licRun
+SocExecValue
+SocUtils
+Lv6util
+Lv6version
+Lv6errors
+Lxm
+Lv6MainArgs
+Verbose
+Soc
+SocPredef
+Lv6Id
+SocExec
+SocExecEvalPredef
+Compile
+AstTab
+AstTabSymbol
+AstInstanciateModel
+Lv6parserUtils
+AstV6
+FilenameExtras
+LicTab
+LicDump
+AstPredef
+Lic
+AstCore
+FreshName
+IdSolver
+EvalConst
+LicEvalConst
+LicEvalType
+UnifyType
+Ast2lic
+AstV6Dump
+EvalClock
+UnifyClock
+LicEvalClock
+EvalType
+LicPrg
+LicMetaOp
+L2lCheckOutputs
+Misc
+L2lRmPoly
+L2lExpandMetaOp
+L2lSplit
+L2lExpandNodes
+L2lExpandArrays
+L2lCheckLoops
+L2lCheckMemSafe
+L2lOptimIte
+Lv6lexer
+Lv6parser
+AstRecognizePredef
+Lic2soc
+Action
+ActionsDeps
+SocVar
+Lus2licRun
+SortActions
+SortActionsExpe
+# OASIS_STOP
diff --git a/src/lv6util.ml b/src/lv6util.ml
index 3cb9c4d440b7299f4d4b41965c9440594b610b0b..3897d86e64520ddbbd392960fec57a6997a2f68f 100644
--- a/src/lv6util.ml
+++ b/src/lv6util.ml
@@ -1,6 +1,4 @@
 
-open Lv6MainArgs
-
 let my_string_of_float = string_of_float
 
 let (entete : out_channel -> string -> string -> unit) =
@@ -36,13 +34,6 @@ let (entete : out_channel -> string -> string -> unit) =
     Printf.fprintf oc "%s on %s the %s at %s %s\n" cb hostname date time_str ce
 
 
-
-let (dump_entete : out_channel -> unit) =
- fun oc -> if global_opt.kcg then 
-     (entete oc "/*" "*/") 
-   else 
-     (entete oc "(*" "*)")  
-
 let rec pos_in_list i x l =
   match l with
     | e::l -> if e=x then i else pos_in_list (i+1) x l
diff --git a/src/main.ml b/src/main.ml
index a35829a5f66becd165bb5abf8e2cd9a23625f324..1ad41422b8ac59b6a6f0a0355e2a4ffa6bfe19f6 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 19/05/2015 (at 14:55) by Erwan Jahier> *)
+(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *)
 
 open Verbose
 open AstV6
@@ -128,7 +128,7 @@ let (gen_autotest_files : LicPrg.t -> Lv6Id.idref option -> Lv6MainArgs.t -> uni
     let name = main_node.Lv6Id.id_id in
     let lutin_file_name = ("_"^name^"_env.lut") in
     let oc = open_out lutin_file_name in
-    Lv6util.dump_entete oc; 
+    LicDump.dump_entete oc; 
     output_string oc ("node " ^ (name) ^ "_env("^ (String.concat ";" outvars_str) ^ 
                          ") returns(" ^ (String.concat ";" invars_str) ^ ") =\n   "^
                          assertion_cstr^" \n");
@@ -223,7 +223,7 @@ let
    res = if r_abs(x)>1.0 then r_abs(1.0-(y/x)) < seuil else r_abs(x-y) < seuil;
 tel
 " in 
-    Lv6util.dump_entete oc; 
+    LicDump.dump_entete oc; 
     output_string oc prg;
     flush oc; 
     close_out oc;
diff --git a/src/socExec.ml b/src/socExec.ml
index 17f7030add7a167c712113ecd3ceaf00b6eba7de..0ca93174e88bfed661ad2d5af3340109bb5046b3 100644
--- a/src/socExec.ml
+++ b/src/socExec.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 26/02/2015 (at 11:25) by Erwan Jahier> *)
+(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *)
 
 open Soc
 open Data
@@ -239,7 +239,7 @@ let (f : Lv6MainArgs.t -> Soc.tbl -> Soc.key -> unit) =
         in
         open_out rif_file 
     in
-    Lv6util.dump_entete oc;
+    LicDump.dump_entete oc;
     RifIO.write_interface oc exp_vntl_i exp_vntl_o None None;
     RifIO.flush oc;
     try loop_step opt soc_tbl (fst soc.profile) exp_vntl_i exp_vntl_o soc ctx 1 oc
diff --git a/src/socUtils.ml b/src/socUtils.ml
index fddae5f2fef6c8759d108812eededf6f2158d773..91e6ba0c28bf4f22c51d2702bc8dc1d49f47f9c4 100644
--- a/src/socUtils.ml
+++ b/src/socUtils.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 26/02/2015 (at 11:25) by Erwan Jahier> *)
+(** Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *)
 
 
 open Soc
@@ -297,7 +297,7 @@ let output: (bool -> string -> Soc.t list -> unit) =
     let header = "Package '" ^ pkg_name ^ "' :" in
     let deco   = (String.make (String.length header) '=') in
 
-      if no_header then () else Lv6util.dump_entete stdout ;
+      if no_header then () else LicDump.dump_entete stdout ;
       print_string (deco ^ "\n" ^ header ^ "\n" ^ deco ^ "\n" ^ "\n");
       print_string (
         String.concat "\n\n" (List.map string_of_soc socs)
diff --git a/test/Makefile b/test/Makefile
index 7ce7db1107b1fa9be75819ed97d65eb73675f7d8..663873f60ecbccd147a92138c68e00c80c4c290f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -130,8 +130,11 @@ lus2lic4.log:
 	$(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic4 lus2lic.tests/test4.exp" || true
 
 
+kcg.log:
+	$(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic-kcg lus2lic.tests/kcg.exp" || true
+
 progression:
-	$(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic progression.exp" || true
+	$(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic lus2lic.tests/progression.exp" || true
 
 
 
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 457c45a23e5060cf1da7a3927a19d9d62b499ac1..a3b172c4be15eae61e9269d3658a80246f2b858a 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,5 +1,5 @@
 ==> lus2lic0.sum <==
-Test Run By jahier on Fri May 22 15:45:45 
+Test Run By jahier on Tue Jun 23 10:49:47 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic0 tests ===
@@ -63,7 +63,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 22 15:45:50 
+Test Run By jahier on Tue Jun 23 10:49:48 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic1 tests ===
@@ -175,6 +175,7 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c call07.lus  {}
 PASS: ./lus2lic  {-2c carV2.lus -n carV2}
 PASS: gcc -o carV2.exec carV2_carV2.c carV2_carV2_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c carV2.lus  {}
+FAIL: Generate c code  : ./lus2lic  {-2c carligths.lus -n carligths}
 PASS: ./lus2lic  {-2c ck2.lus -n ck2}
 PASS: gcc -o ck2.exec ck2_ck2.c ck2_ck2_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c ck2.lus  {}
@@ -397,7 +398,7 @@ PASS: gcc -o multipar.exec multipar_multipar.c multipar_multipar_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus  {}
 
 ==> lus2lic2.sum <==
-Test Run By jahier on Fri May 22 15:46:27 
+Test Run By jahier on Tue Jun 23 10:50:03 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic2 tests ===
@@ -496,6 +497,9 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c notTwo.lus  {}
 PASS: ./lus2lic  {-2c o2l_feux_compl.lus -n o2l_feux_compl}
 PASS: gcc -o o2l_feux_compl.exec o2l_feux_compl_o2l_feux_compl.c o2l_feux_compl_o2l_feux_compl_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c o2l_feux_compl.lus  {}
+PASS: ./lus2lic  {-2c oneq.lus -n oneq}
+PASS: gcc -o oneq.exec oneq_oneq.c oneq_oneq_loop.c 
+PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c oneq.lus  {}
 PASS: ./lus2lic  {-2c onlyroll.lus -n onlyroll}
 PASS: gcc -o onlyroll.exec onlyroll_onlyroll.c onlyroll_onlyroll_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c onlyroll.lus  {}
@@ -551,6 +555,7 @@ PASS: ./lus2lic  {-2c polymorphic_pack.lus -n polymorphic_pack}
 PASS: ./lus2lic  {-2c poussoir.lus -n poussoir}
 PASS: gcc -o poussoir.exec poussoir_poussoir.c poussoir_poussoir_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c poussoir.lus  {}
+FAIL: Generate c code  : ./lus2lic  {-2c pplus.lus -n pplus}
 PASS: ./lus2lic  {-2c pre_x.lus -n pre_x}
 PASS: gcc -o pre_x.exec pre_x_pre_x.c pre_x_pre_x_loop.c 
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c pre_x.lus  {}
@@ -727,7 +732,7 @@ PASS: gcc -o zzz2.exec zzz2_zzz2.c zzz2_zzz2_loop.c
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus  {}
 
 ==> lus2lic3.sum <==
-Test Run By jahier on Fri May 22 15:47:35 
+Test Run By jahier on Tue Jun 23 10:50:48 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic3 tests ===
@@ -743,11 +748,10 @@ PASS: ./myec2c {-o COUNTER.c COUNTER.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node COUNTER.lus {}
 PASS: ./lus2lic {-o CURRENT.lic CURRENT.lus}
 PASS: ./lus2lic {-ec -o CURRENT.ec CURRENT.lus}
-PASS: ./myec2c {-o CURRENT.c CURRENT.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node CURRENT.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o CURRENT.c CURRENT.ec}
 PASS: ./lus2lic {-o Condact.lic Condact.lus}
 PASS: ./lus2lic {-ec -o Condact.ec Condact.lus}
-PASS: ./myec2c {-o Condact.c Condact.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o Condact.c Condact.ec}
 PASS: ./lus2lic {-o EDGE.lic EDGE.lus}
 PASS: ./lus2lic {-ec -o EDGE.ec EDGE.lus}
 PASS: ./myec2c {-o EDGE.c EDGE.ec}
@@ -811,16 +815,14 @@ PASS: ./myec2c {-o argos.c argos.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node argos.lus {}
 PASS: ./lus2lic {-o array_concat.lic array_concat.lus}
 PASS: ./lus2lic {-ec -o array_concat.ec array_concat.lus}
-PASS: ./myec2c {-o array_concat.c array_concat.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node array_concat.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o array_concat.c array_concat.ec}
 PASS: ./lus2lic {-o array_concat2.lic array_concat2.lus}
 PASS: ./lus2lic {-ec -o array_concat2.ec array_concat2.lus}
 PASS: ./myec2c {-o array_concat2.c array_concat2.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node array_concat2.lus {}
 PASS: ./lus2lic {-o arrays.lic arrays.lus}
 PASS: ./lus2lic {-ec -o arrays.ec arrays.lus}
-PASS: ./myec2c {-o arrays.c arrays.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node arrays.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o arrays.c arrays.ec}
 PASS: ./lus2lic {-o asservi.lic asservi.lus}
 PASS: ./lus2lic {-ec -o asservi.ec asservi.lus}
 PASS: ./myec2c {-o asservi.c asservi.ec}
@@ -846,8 +848,7 @@ PASS: ./myec2c {-o bred_lv4.c bred_lv4.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node bred_lv4.lus {}
 PASS: ./lus2lic {-o bug.lic bug.lus}
 PASS: ./lus2lic {-ec -o bug.ec bug.lus}
-PASS: ./myec2c {-o bug.c bug.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node bug.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o bug.c bug.ec}
 PASS: ./lus2lic {-o bug2.lic bug2.lus}
 PASS: ./lus2lic {-ec -o bug2.ec bug2.lus}
 PASS: ./myec2c {-o bug2.c bug2.ec}
@@ -862,11 +863,10 @@ PASS: ./lus2lic {-ec -o call.ec call.lus}
 PASS: ./myec2c {-o call.c call.ec}
 PASS: ./lus2lic {-o call01.lic call01.lus}
 PASS: ./lus2lic {-ec -o call01.ec call01.lus}
-PASS: ./myec2c {-o call01.c call01.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o call01.c call01.ec}
 PASS: ./lus2lic {-o call02.lic call02.lus}
 PASS: ./lus2lic {-ec -o call02.ec call02.lus}
-PASS: ./myec2c {-o call02.c call02.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node call02.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o call02.c call02.ec}
 PASS: ./lus2lic {-o call03.lic call03.lus}
 PASS: ./lus2lic {-ec -o call03.ec call03.lus}
 PASS: ./myec2c {-o call03.c call03.ec}
@@ -876,7 +876,7 @@ PASS: ./myec2c {-o call04.c call04.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node call04.lus {}
 PASS: ./lus2lic {-o call05.lic call05.lus}
 PASS: ./lus2lic {-ec -o call05.ec call05.lus}
-PASS: ./myec2c {-o call05.c call05.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o call05.c call05.ec}
 PASS: ./lus2lic {-o call06.lic call06.lus}
 PASS: ./lus2lic {-ec -o call06.ec call06.lus}
 PASS: ./myec2c {-o call06.c call06.ec}
@@ -887,6 +887,10 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node call07.lus {}
 PASS: ./lus2lic {-o carV2.lic carV2.lus}
 PASS: ./lus2lic {-ec -o carV2.ec carV2.lus}
 PASS: ./myec2c {-o carV2.c carV2.ec}
+PASS: ./lus2lic {-o carligths.lic carligths.lus}
+PASS: ./lus2lic {-ec -o carligths.ec carligths.lus}
+PASS: ./myec2c {-o carligths.c carligths.ec}
+FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node carligths.lus {}
 PASS: ./lus2lic {-o ck2.lic ck2.lus}
 PASS: ./lus2lic {-ec -o ck2.ec ck2.lus}
 PASS: ./myec2c {-o ck2.c ck2.ec}
@@ -897,8 +901,7 @@ PASS: ./myec2c {-o ck3.c ck3.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ck3.lus {}
 PASS: ./lus2lic {-o ck4.lic ck4.lus}
 PASS: ./lus2lic {-ec -o ck4.ec ck4.lus}
-PASS: ./myec2c {-o ck4.c ck4.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ck4.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o ck4.c ck4.ec}
 PASS: ./lus2lic {-o ck5.lic ck5.lus}
 PASS: ./lus2lic {-ec -o ck5.ec ck5.lus}
 PASS: ./myec2c {-o ck5.c ck5.ec}
@@ -908,8 +911,7 @@ PASS: ./lus2lic {-ec -o ck6.ec ck6.lus}
 PASS: ./myec2c {-o ck6.c ck6.ec}
 PASS: ./lus2lic {-o ck7.lic ck7.lus}
 PASS: ./lus2lic {-ec -o ck7.ec ck7.lus}
-PASS: ./myec2c {-o ck7.c ck7.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ck7.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o ck7.c ck7.ec}
 PASS: ./lus2lic {-o clock1_2ms.lic clock1_2ms.lus}
 PASS: ./lus2lic {-ec -o clock1_2ms.ec clock1_2ms.lus}
 PASS: ./myec2c {-o clock1_2ms.c clock1_2ms.ec}
@@ -924,7 +926,7 @@ PASS: ./myec2c {-o cminus.c cminus.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node cminus.lus {}
 PASS: ./lus2lic {-o complex.lic complex.lus}
 PASS: ./lus2lic {-ec -o complex.ec complex.lus}
-PASS: ./myec2c {-o complex.c complex.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o complex.c complex.ec}
 PASS: ./lus2lic {-o compteur.lic compteur.lus}
 PASS: ./lus2lic {-ec -o compteur.ec compteur.lus}
 PASS: ./myec2c {-o compteur.c compteur.ec}
@@ -963,7 +965,7 @@ PASS: ./myec2c {-o deSimone.c deSimone.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node deSimone.lus {}
 PASS: ./lus2lic {-o decl.lic decl.lus}
 PASS: ./lus2lic {-ec -o decl.ec decl.lus}
-PASS: ./myec2c {-o decl.c decl.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o decl.c decl.ec}
 PASS: ./lus2lic {-o declaration.lic declaration.lus}
 PASS: ./lus2lic {-ec -o declaration.ec declaration.lus}
 PASS: ./myec2c {-o declaration.c declaration.ec}
@@ -1003,8 +1005,7 @@ PASS: ./myec2c {-o exclusion.c exclusion.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node exclusion.lus {}
 PASS: ./lus2lic {-o filliter.lic filliter.lus}
 PASS: ./lus2lic {-ec -o filliter.ec filliter.lus}
-PASS: ./myec2c {-o filliter.c filliter.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node filliter.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o filliter.c filliter.ec}
 PASS: ./lus2lic {-o filter.lic filter.lus}
 PASS: ./lus2lic {-ec -o filter.ec filter.lus}
 PASS: ./myec2c {-o filter.c filter.ec}
@@ -1023,7 +1024,7 @@ PASS: ./myec2c {-o fresh_name.c fresh_name.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node fresh_name.lus {}
 PASS: ./lus2lic {-o func_with_body.lic func_with_body.lus}
 PASS: ./lus2lic {-ec -o func_with_body.ec func_with_body.lus}
-PASS: ./myec2c {-o func_with_body.c func_with_body.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o func_with_body.c func_with_body.ec}
 PASS: ./lus2lic {-o hanane.lic hanane.lus}
 PASS: ./lus2lic {-ec -o hanane.ec hanane.lus}
 PASS: ./myec2c {-o hanane.c hanane.ec}
@@ -1053,8 +1054,7 @@ PASS: ./myec2c {-o is_stable.c is_stable.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node is_stable.lus {}
 PASS: ./lus2lic {-o iter.lic iter.lus}
 PASS: ./lus2lic {-ec -o iter.ec iter.lus}
-PASS: ./myec2c {-o iter.c iter.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node iter.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o iter.c iter.ec}
 PASS: ./lus2lic {-o iterFibo.lic iterFibo.lus}
 PASS: ./lus2lic {-ec -o iterFibo.ec iterFibo.lus}
 PASS: ./myec2c {-o iterFibo.c iterFibo.ec}
@@ -1077,7 +1077,7 @@ PASS: ./myec2c {-o lucky.c lucky.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node lucky.lus {}
 PASS: ./lus2lic {-o lustre.lic lustre.lus}
 PASS: ./lus2lic {-ec -o lustre.ec lustre.lus}
-PASS: ./myec2c {-o lustre.c lustre.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o lustre.c lustre.ec}
 PASS: ./lus2lic {-o lustre_test1_ok.lic lustre_test1_ok.lus}
 PASS: ./lus2lic {-ec -o lustre_test1_ok.ec lustre_test1_ok.lus}
 PASS: ./myec2c {-o lustre_test1_ok.c lustre_test1_ok.ec}
@@ -1088,7 +1088,7 @@ PASS: ./myec2c {-o map.c map.ec}
 FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node map.lus {}
 PASS: ./lus2lic {-o map_red_iter.lic map_red_iter.lus}
 PASS: ./lus2lic {-ec -o map_red_iter.ec map_red_iter.lus}
-PASS: ./myec2c {-o map_red_iter.c map_red_iter.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o map_red_iter.c map_red_iter.ec}
 PASS: ./lus2lic {-o mapdeRed.lic mapdeRed.lus}
 PASS: ./lus2lic {-ec -o mapdeRed.ec mapdeRed.lus}
 PASS: ./myec2c {-o mapdeRed.c mapdeRed.ec}
@@ -1165,10 +1165,10 @@ PASS: ./myec2c {-o mm3.c mm3.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node mm3.lus {}
 PASS: ./lus2lic {-o model.lic model.lus}
 PASS: ./lus2lic {-ec -o model.ec model.lus}
-PASS: ./myec2c {-o model.c model.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o model.c model.ec}
 PASS: ./lus2lic {-o model2.lic model2.lus}
 PASS: ./lus2lic {-ec -o model2.ec model2.lus}
-PASS: ./myec2c {-o model2.c model2.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o model2.c model2.ec}
 PASS: ./lus2lic {-o modelInst.lic modelInst.lus}
 PASS: ./lus2lic {-ec -o modelInst.ec modelInst.lus}
 PASS: ./myec2c {-o modelInst.c modelInst.ec}
@@ -1230,7 +1230,7 @@ PASS: ./myec2c {-o multipar.c multipar.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {}
 
 ==> lus2lic4.sum <==
-Test Run By jahier on Fri May 22 15:48:35 
+Test Run By jahier on Tue Jun 23 10:51:01 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic4 tests ===
@@ -1336,8 +1336,7 @@ PASS: ./lus2lic {-ec -o newpacks.ec newpacks.lus}
 PASS: ./myec2c {-o newpacks.c newpacks.ec}
 PASS: ./lus2lic {-o noAlarm.lic noAlarm.lus}
 PASS: ./lus2lic {-ec -o noAlarm.ec noAlarm.lus}
-PASS: ./myec2c {-o noAlarm.c noAlarm.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node noAlarm.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o noAlarm.c noAlarm.ec}
 PASS: ./lus2lic {-o node_caller1.lic node_caller1.lus}
 PASS: ./lus2lic {-ec -o node_caller1.ec node_caller1.lus}
 PASS: ./myec2c {-o node_caller1.c node_caller1.ec}
@@ -1348,8 +1347,7 @@ PASS: ./myec2c {-o nodeparam.c nodeparam.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node nodeparam.lus {}
 PASS: ./lus2lic {-o noeudsIndependants.lic noeudsIndependants.lus}
 PASS: ./lus2lic {-ec -o noeudsIndependants.ec noeudsIndependants.lus}
-PASS: ./myec2c {-o noeudsIndependants.c noeudsIndependants.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node noeudsIndependants.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o noeudsIndependants.c noeudsIndependants.ec}
 PASS: ./lus2lic {-o normal.lic normal.lus}
 PASS: ./lus2lic {-ec -o normal.ec normal.lus}
 PASS: ./myec2c {-o normal.c normal.ec}
@@ -1361,6 +1359,9 @@ PASS: ./lus2lic {-o o2l_feux_compl.lic o2l_feux_compl.lus}
 PASS: ./lus2lic {-ec -o o2l_feux_compl.ec o2l_feux_compl.lus}
 PASS: ./myec2c {-o o2l_feux_compl.c o2l_feux_compl.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node o2l_feux_compl.lus {}
+PASS: ./lus2lic {-o oneq.lic oneq.lus}
+PASS: ./lus2lic {-ec -o oneq.ec oneq.lus}
+FAIL: Try ec2c on the result: ./myec2c {-o oneq.c oneq.ec}
 PASS: ./lus2lic {-o onlyroll.lic onlyroll.lus}
 PASS: ./lus2lic {-ec -o onlyroll.ec onlyroll.lus}
 PASS: ./myec2c {-o onlyroll.c onlyroll.ec}
@@ -1386,10 +1387,10 @@ PASS: ./lus2lic {-ec -o p.ec p.lus}
 PASS: ./myec2c {-o p.c p.ec}
 PASS: ./lus2lic {-o pack1.lic pack1.lus}
 PASS: ./lus2lic {-ec -o pack1.ec pack1.lus}
-PASS: ./myec2c {-o pack1.c pack1.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o pack1.c pack1.ec}
 PASS: ./lus2lic {-o packageTableau.lic packageTableau.lus}
 PASS: ./lus2lic {-ec -o packageTableau.ec packageTableau.lus}
-PASS: ./myec2c {-o packageTableau.c packageTableau.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o packageTableau.c packageTableau.ec}
 PASS: ./lus2lic {-o packed_cst.lic packed_cst.lus}
 PASS: ./lus2lic {-ec -o packed_cst.ec packed_cst.lus}
 PASS: ./myec2c {-o packed_cst.c packed_cst.ec}
@@ -1402,8 +1403,7 @@ PASS: ./myec2c {-o param_node.c param_node.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node param_node.lus {}
 PASS: ./lus2lic {-o param_node2.lic param_node2.lus}
 PASS: ./lus2lic {-ec -o param_node2.ec param_node2.lus}
-PASS: ./myec2c {-o param_node2.c param_node2.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node param_node2.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o param_node2.c param_node2.ec}
 PASS: ./lus2lic {-o param_node3.lic param_node3.lus}
 PASS: ./lus2lic {-ec -o param_node3.ec param_node3.lus}
 PASS: ./myec2c {-o param_node3.c param_node3.ec}
@@ -1441,11 +1441,14 @@ PASS: ./myec2c {-o ply03.c ply03.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ply03.lus {}
 PASS: ./lus2lic {-o polymorphic_pack.lic polymorphic_pack.lus}
 PASS: ./lus2lic {-ec -o polymorphic_pack.ec polymorphic_pack.lus}
-PASS: ./myec2c {-o polymorphic_pack.c polymorphic_pack.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o polymorphic_pack.c polymorphic_pack.ec}
 PASS: ./lus2lic {-o poussoir.lic poussoir.lus}
 PASS: ./lus2lic {-ec -o poussoir.ec poussoir.lus}
 PASS: ./myec2c {-o poussoir.c poussoir.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node poussoir.lus {}
+PASS: ./lus2lic {-o pplus.lic pplus.lus}
+PASS: ./lus2lic {-ec -o pplus.ec pplus.lus}
+FAIL: Try ec2c on the result: ./myec2c {-o pplus.c pplus.ec}
 PASS: ./lus2lic {-o pre_x.lic pre_x.lus}
 PASS: ./lus2lic {-ec -o pre_x.ec pre_x.lus}
 PASS: ./myec2c {-o pre_x.c pre_x.ec}
@@ -1526,8 +1529,7 @@ PASS: ./myec2c {-o stopwatch.c stopwatch.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node stopwatch.lus {}
 PASS: ./lus2lic {-o struct0.lic struct0.lus}
 PASS: ./lus2lic {-ec -o struct0.ec struct0.lus}
-PASS: ./myec2c {-o struct0.c struct0.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node struct0.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o struct0.c struct0.ec}
 PASS: ./lus2lic {-o struct_with.lic struct_with.lus}
 PASS: ./lus2lic {-ec -o struct_with.ec struct_with.lus}
 PASS: ./myec2c {-o struct_with.c struct_with.ec}
@@ -1570,15 +1572,13 @@ PASS: ./myec2c {-o test_boolred.c test_boolred.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_boolred.lus {}
 PASS: ./lus2lic {-o test_clash.lic test_clash.lus}
 PASS: ./lus2lic {-ec -o test_clash.ec test_clash.lus}
-PASS: ./myec2c {-o test_clash.c test_clash.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o test_clash.c test_clash.ec}
 PASS: ./lus2lic {-o test_condact.lic test_condact.lus}
 PASS: ./lus2lic {-ec -o test_condact.ec test_condact.lus}
-PASS: ./myec2c {-o test_condact.c test_condact.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_condact.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o test_condact.c test_condact.ec}
 PASS: ./lus2lic {-o test_const.lic test_const.lus}
 PASS: ./lus2lic {-ec -o test_const.ec test_const.lus}
-PASS: ./myec2c {-o test_const.c test_const.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_const.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o test_const.c test_const.ec}
 PASS: ./lus2lic {-o test_diese.lic test_diese.lus}
 PASS: ./lus2lic {-ec -o test_diese.ec test_diese.lus}
 PASS: ./myec2c {-o test_diese.c test_diese.ec}
@@ -1588,7 +1588,7 @@ PASS: ./lus2lic {-ec -o test_enum.ec test_enum.lus}
 PASS: ./myec2c {-o test_enum.c test_enum.ec}
 PASS: ./lus2lic {-o test_extern.lic test_extern.lus}
 PASS: ./lus2lic {-ec -o test_extern.ec test_extern.lus}
-PASS: ./myec2c {-o test_extern.c test_extern.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o test_extern.c test_extern.ec}
 PASS: ./lus2lic {-o test_map.lic test_map.lus}
 PASS: ./lus2lic {-ec -o test_map.ec test_map.lus}
 PASS: ./myec2c {-o test_map.c test_map.ec}
@@ -1646,19 +1646,16 @@ PASS: ./myec2c {-o trivial_array.c trivial_array.ec}
 PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node trivial_array.lus {}
 PASS: ./lus2lic {-o ts01.lic ts01.lus}
 PASS: ./lus2lic {-ec -o ts01.ec ts01.lus}
-PASS: ./myec2c {-o ts01.c ts01.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ts01.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o ts01.c ts01.ec}
 PASS: ./lus2lic {-o ts04.lic ts04.lus}
 PASS: ./lus2lic {-ec -o ts04.ec ts04.lus}
-PASS: ./myec2c {-o ts04.c ts04.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ts04.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o ts04.c ts04.ec}
 PASS: ./lus2lic {-o tuple.lic tuple.lus}
 PASS: ./lus2lic {-ec -o tuple.ec tuple.lus}
-PASS: ./myec2c {-o tuple.c tuple.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node tuple.lus {}
+FAIL: Try ec2c on the result: ./myec2c {-o tuple.c tuple.ec}
 PASS: ./lus2lic {-o type_decl.lic type_decl.lus}
 PASS: ./lus2lic {-ec -o type_decl.ec type_decl.lus}
-PASS: ./myec2c {-o type_decl.c type_decl.ec}
+FAIL: Try ec2c on the result: ./myec2c {-o type_decl.c type_decl.ec}
 PASS: ./lus2lic {-o uu.lic uu.lus}
 PASS: ./lus2lic {-ec -o uu.ec uu.lus}
 PASS: ./myec2c {-o uu.c uu.ec}
@@ -1702,38 +1699,38 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 		=== lus2lic1 Summary ===
 
 # of expected passes		319
-# of unexpected failures	3
+# of unexpected failures	4
 
 ==> lus2lic2.sum <==
 
 		=== lus2lic2 Summary ===
 
-# of expected passes		316
-# of unexpected failures	2
+# of expected passes		319
+# of unexpected failures	3
 
 ==> lus2lic3.sum <==
 
 		=== lus2lic3 Summary ===
 
-# of expected passes		485
-# of unexpected failures	6
+# of expected passes		460
+# of unexpected failures	26
 
 ==> lus2lic4.sum <==
 
 		=== lus2lic4 Summary ===
 
-# of expected passes		447
-# of unexpected failures	3
+# of expected passes		427
+# of unexpected failures	20
 ===============================
-# Total number of failures: 14
-lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 4 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 36 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 68 seconds
-lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 59 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 78 seconds
+# Total number of failures: 53
+lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 15 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 45 seconds
+lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 13 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 48 seconds
 * Ref time: 
-0.05user 0.04system 4:07.91elapsed 0%CPU (0avgtext+0avgdata 5092maxresident)k
-160inputs+0outputs (0major+5512minor)pagefaults 0swaps
+0.05user 0.02system 2:01.52elapsed 0%CPU (0avgtext+0avgdata 5068maxresident)k
+32inputs+0outputs (0major+5533minor)pagefaults 0swaps
 * Quick time (-j 4):
-0.05user 0.02system 1:29.15elapsed 0%CPU (0avgtext+0avgdata 5056maxresident)k
-160inputs+0outputs (0major+5562minor)pagefaults 0swaps
+0.03user 0.02system 0:52.62elapsed 0%CPU (0avgtext+0avgdata 5080maxresident)k
+64inputs+0outputs (0major+5579minor)pagefaults 0swaps
diff --git a/test/lus2lic.time b/test/lus2lic.time
index 15aa7c1f5726c9a8fb730a74f14c421358d4b506..df57a141cf1a0024d1ee91a3fde06195329ebd3f 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -1,11 +1,11 @@
-lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 4 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 36 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 68 seconds
-lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 59 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 78 seconds
+lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 15 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 45 seconds
+lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 13 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 48 seconds
 * Ref time: 
-0.05user 0.04system 4:07.91elapsed 0%CPU (0avgtext+0avgdata 5092maxresident)k
-160inputs+0outputs (0major+5512minor)pagefaults 0swaps
+0.05user 0.02system 2:01.52elapsed 0%CPU (0avgtext+0avgdata 5068maxresident)k
+32inputs+0outputs (0major+5533minor)pagefaults 0swaps
 * Quick time (-j 4):
-0.05user 0.02system 1:29.15elapsed 0%CPU (0avgtext+0avgdata 5056maxresident)k
-160inputs+0outputs (0major+5562minor)pagefaults 0swaps
+0.03user 0.02system 0:52.62elapsed 0%CPU (0avgtext+0avgdata 5080maxresident)k
+64inputs+0outputs (0major+5579minor)pagefaults 0swaps
diff --git a/test/should_work/carligths.lus b/test/should_work/carligths.lus
new file mode 100644
index 0000000000000000000000000000000000000000..1a51ea455beed87ba5e38779b1a1e876f9805c5c
--- /dev/null
+++ b/test/should_work/carligths.lus
@@ -0,0 +1,20 @@
+node carlights(TL, TR, LH, FL, LRL:bool) returns (side, low, high, fog, long:bool);
+var fog_select, long_select :bool;
+let
+  assert(not ((LH and TL) or (LH and TR)));
+  fog_select = FL;
+  long_select = LRL;
+  side = false -> (not(pre(side) or pre(low) or pre(high)) and TL) or
+    ( (pre(high) or pre(low) ) and (TL or TR)) or
+      (if not(TL or TR or LH) then pre(side) else false);
+  low = false -> (pre(side) and TL) or 
+    (pre(high) and LH) or 
+      (if not(TL or TR or LH) then pre(low) else false);
+  high = false -> (pre(low) and LH ) or 
+    (if not(TL or TR or LH) then pre(high) else false);
+  fog = pre(low) and fog_select;
+  long = pre(high) and long_select;
+
+
+     
+tel
diff --git a/test/should_work/double_delay.lus b/test/should_work/double_delay.lus
new file mode 100644
index 0000000000000000000000000000000000000000..7174f550b8913219406671a0bcf0013ab02de52c
--- /dev/null
+++ b/test/should_work/double_delay.lus
@@ -0,0 +1,6 @@
+ 
+node double_delay(x: bool) returns (r,pr: bool);
+let
+  r = x fby x fby x;
+  pr = r fby r;
+tel
diff --git a/test/should_work/map.lus b/test/should_work/map.lus
new file mode 100644
index 0000000000000000000000000000000000000000..ce0c8f8aa117764c0f22611137f60f9c5117a2c9
--- /dev/null
+++ b/test/should_work/map.lus
@@ -0,0 +1,18 @@
+
+function myplus<<type t>>(x, y : t) returns (o : t);
+let
+   o = x + y;
+tel
+
+const n=4;
+node titi<<type t>> = map<<myplus<<t>>,n>>;
+function toto(x,y: int^n) returns (o: int^n);
+let
+	o = map<<+, n>>(x,y);
+	(* o = titi<<int>>(x,y); *)
+tel
+
+function map(x,y: real^n) returns (o: real^n);
+let
+	o = titi<<real>>(x,y);
+tel
diff --git a/test/should_work/modes3x2_v4.lus b/test/should_work/modes3x2_v4.lus
new file mode 100644
index 0000000000000000000000000000000000000000..196b18151f1b1e52a588bf81c83915431881ba23
--- /dev/null
+++ b/test/should_work/modes3x2_v4.lus
@@ -0,0 +1,67 @@
+(* version utilisant les horloges enumérées à la V6 *)
+
+type data = int;
+
+-- version pour otawa
+extern function A0(x:data) returns (y:data);
+extern function A1(x:data) returns (y:data);
+extern function A2(x:data) returns (y:data);
+extern function B0(x:data) returns (y:data);
+extern function B1(x:data) returns (y:data);
+
+
+
+type state = enum { idle, low, high };
+
+node A(x:data; ca1, ca2: bool) returns (y:data);
+var
+   s, ps: state;
+let
+   s = if ps = idle then (if ca1 then low else idle)
+       else if ps = low  then (if ca1 then idle else if ca2 then high else low)
+       else (* ps = high *) (if ca1 then idle else if ca2 then low  else high);
+  ps = idle -> pre s;
+  y = merge s 
+             ( idle -> A0(x when idle(s)))
+             ( low  -> A1(x when low(s)) )
+             ( high -> A2(x when high(s)));
+tel
+
+node B(x:data; nom, sby: bool) returns (z:data);
+var
+  sby_when_not_nom : bool when not nom;
+let
+  sby_when_not_nom = sby when not nom;
+  z = merge nom 
+  (true -> B0(x when nom))
+  (false -> (merge sby_when_not_nom
+             (true -> B1(x when sby_when_not_nom))
+             (false -> (0 -> pre z)  when not sby_when_not_nom)));
+tel
+node B_old(x:data; nom, sby: bool) returns (z:data);
+let
+	z = if nom then current (B0(x when nom))
+	    else if sby then current (B1(x when sby))
+		 else (0 -> pre z);
+tel
+
+node modes3x2_v4(x:data; on_off, toggle: bool) returns (res: data;
+--);
+--var
+	y, z : data;	
+	sby : bool;
+	nom : bool;
+);
+let
+--	assert #(on_off, toggle);
+
+	y = A(x, on_off, toggle);
+	z = B(y, nom, sby);
+
+	(* coordination commandes *)
+	--pcritic, critic = switch(false, on_off, on_off);
+	--sleep = pcritic and (on_off or toggle);
+	sby = (on_off = (true -> pre nom));
+	nom = (on_off = (false -> pre sby));
+	res = y + z;
+tel
diff --git a/test/should_work/oneq.lus b/test/should_work/oneq.lus
new file mode 100644
index 0000000000000000000000000000000000000000..d9a68b21409d03e8b4382a7a5e759b0ebb7ae3d7
--- /dev/null
+++ b/test/should_work/oneq.lus
@@ -0,0 +1,14 @@
+node oneq(x:bool) returns (y:bool);
+let
+  y = x;
+tel
+
+type alias = int;
+type pair = struct { a:int; b:int };
+type color = enum { blue, white, black };
+
+function type_decl(i1, i2: int) returns (x: pair);
+let
+  x= pair {a=i1; b=i2};
+tel
+
diff --git a/test/should_work/pplus.lus b/test/should_work/pplus.lus
new file mode 100644
index 0000000000000000000000000000000000000000..bcc89f9b13ac62cfcd4d37c85ddf23948682c6f7
--- /dev/null
+++ b/test/should_work/pplus.lus
@@ -0,0 +1,4 @@
+node plus(a: int ; b: int) returns (d: int);
+let
+  d = a + b;
+tel
diff --git a/test/should_work/test_boolred.lus b/test/should_work/test_boolred.lus
new file mode 100644
index 0000000000000000000000000000000000000000..9c13db391e87b9d8d21d7e9facabb0742ccb53ee
--- /dev/null
+++ b/test/should_work/test_boolred.lus
@@ -0,0 +1,5 @@
+
+node test_boolred(t:bool^5) returns (res:bool);
+let
+  res = boolred<<1,2,5>>(t);
+tel
\ No newline at end of file
diff --git a/test/should_work/test_poly.lus b/test/should_work/test_poly.lus
new file mode 100644
index 0000000000000000000000000000000000000000..340f348b719b5ef1beb7f353016d49e65c5bfda9
--- /dev/null
+++ b/test/should_work/test_poly.lus
@@ -0,0 +1,10 @@
+
+
+node truc = map<<+,42>>;
+
+(* PASSE DoNotPoly en spécialisant truc ! ... *)
+node test_poly(x,y: int) returns (o: int^42; o2:real^42);
+let
+  o = if (x < y) then 0^42 else truc(x^42, y^42); 
+  o2=truc(3.0^42, 2.0^42); 
+tel