diff --git a/src/split.ml b/src/split.ml
index 24ea759b55c20e754e0ef60cfae48740f5dd1f30..796121e1f13ffac95a2f1c74f884d56ff89b0ea7 100644
--- a/src/split.ml
+++ b/src/split.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 04/11/2008 (at 16:48) by Erwan Jahier> *)
+(** Time-stamp: <modified the 04/11/2008 (at 16:59) by Erwan Jahier> *)
 
 
 open Lxm
@@ -137,8 +137,18 @@ and (split_val_exp : bool -> Eff.val_exp -> Eff.val_exp * split_acc) =
           (* We do not create an intermediary variable for those *)
         -> ve, ([],[])
 
-      | CallByNameEff (_by_name_op_eff, _fl) ->  
-          ve, ([],[]) (* but what about that one ??? *)
+      | CallByNameEff (by_name_op_eff, fl) ->
+          let fl, eql, vl = 
+            List.fold_left
+              (fun (fl_acc, eql_acc, vl_acc) (fn, fv) -> 
+                 let fv, (eql, vl) = split_val_exp false fv in
+                   ((fn,fv)::fl_acc, eql@eql_acc, vl@vl_acc)
+              )
+              ([],[],[])
+              fl 
+          in
+            CallByNameEff (by_name_op_eff, List.rev fl), (eql, vl)
+
 
       | CallByPosEff(by_pos_op_eff, OperEff vel) ->
           (* recursively split the arguments *) 
diff --git a/src/test/test.res.exp b/src/test/test.res.exp
index 7b53623a8abb8b5f8bb63725a1b55a8e03734958..06f5a53c689d3bbb43ec3e7201435c222b783e60 100644
--- a/src/test/test.res.exp
+++ b/src/test/test.res.exp
@@ -8285,6 +8285,8 @@ tel
 Opening file should_work/Pascal/left.lus
 type _left::truc = struct  {a : A_bool_100; b : int};
 node left::toto(x:bool) returns (t:A__left::truc_3);
+var
+   _v1:A_bool_100;
 let
    t[0].a[0 .. 98 step 2][48 .. 0 step -2] = true^25;
    t[0].a[0 .. 98 step 2][1 .. 49 step 2] = false^25;
@@ -8292,7 +8294,8 @@ let
    t[0].a[1 .. 99 step 2][1] = true;
    t[0].a[5 .. 99 step 2] = false^48;
    t[0].b = 42;
-   t[1 .. 2] = _left::truc{a=true^100;b=0}^2;
+   t[1 .. 2] = _left::truc{a=_v1;b=0}^2;
+   _v1 = true^100;
 tel
 -- end of node left::toto
 -- automatically defined aliases:
@@ -9631,8 +9634,21 @@ node struct::plus(
 	b:_struct::complex) 
 returns (
 	c:_struct::complex);
+var
+   _v4:real;
+   _v5:real;
+   _v6:real;
+   _v1:real;
+   _v2:real;
+   _v3:real;
 let
-   c = _struct::complex{re=a.re + b.re;im=a.im + b.im};
+   c = _struct::complex{re=_v3;im=_v6};
+   _v4 = a.im;
+   _v5 = b.im;
+   _v6 = _v4 + _v5;
+   _v1 = a.re;
+   _v2 = b.re;
+   _v3 = _v1 + _v2;
 tel
 -- end of node struct::plus
 
@@ -10587,18 +10603,26 @@ returns (
 	acc_out:_Gyroscope2::CFF_Eltstruct;
 	elt_out:_Gyroscope2::Valid_ChannelT);
 var
+   _v4:_Gyroscope2::Valid_ChannelT;
+   _v3:int;
    _v1:int;
    _v2:int;
-   _v3:bool;
-   _v4:_Gyroscope2::Valid_ChannelT;
+   _v5:int;
+   _v6:int;
+   _v7:bool;
+   _v8:_Gyroscope2::Valid_ChannelT;
 let
-    acc_out = _Gyroscope2::CFF_Eltstruct{indx=acc_in.indx +
-	 1;indx_toChange=acc_in.indx_toChange;value=acc_in.value};
-   elt_out =  if _v3 then _v4 else elt_in;
-   _v1 = acc_in.indx;
-   _v2 = acc_in.indx_toChange;
-   _v3 = _v1 = _v2;
+    acc_out =
+	 _Gyroscope2::CFF_Eltstruct{indx=_v2;indx_toChange=_v3;value=_v4};
    _v4 = acc_in.value;
+   _v3 = acc_in.indx_toChange;
+   _v1 = acc_in.indx;
+   _v2 = _v1 + 1;
+   elt_out =  if _v7 then _v8 else elt_in;
+   _v5 = acc_in.indx;
+   _v6 = acc_in.indx_toChange;
+   _v7 = _v5 = _v6;
+   _v8 = acc_in.value;
 tel
 -- end of node Gyroscope2::addOneChannelIter
 
@@ -10622,12 +10646,32 @@ node Gyroscope2::CFC_iter(
 	currentChannel:_Gyroscope2::Valid_ChannelT) 
 returns (
 	structOut:_Gyroscope2::CFF_struct);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:A__Gyroscope2::Valid_ChannelT_3;
+   _v8:int;
+   _v9:A__Gyroscope2::Valid_ChannelT_3;
+   _v10:A__Gyroscope2::Valid_ChannelT_3;
+   _v11:A__Gyroscope2::Valid_ChannelT_3;
+   _v3:int;
+   _v1:int;
+   _v2:int;
 let
-    structOut = _Gyroscope2::CFF_struct{indx=structIn.indx +
-	1;indx_toChange=structIn.indx_toChange;tabToFill= if structIn.indx_toChange
-	= structIn.indx then structIn.tabToFill else
-	Gyroscope2::addOneChannel(structIn.indx, currentChannel,
-	 structIn.tabToFill)};
+    structOut =
+	 _Gyroscope2::CFF_struct{indx=_v2;indx_toChange=_v3;tabToFill=_v11};
+   _v4 = structIn.indx_toChange;
+   _v5 = structIn.indx;
+   _v6 = _v4 = _v5;
+   _v7 = structIn.tabToFill;
+   _v8 = structIn.indx;
+   _v9 = structIn.tabToFill;
+   _v10 = Gyroscope2::addOneChannel(_v8, currentChannel, _v9);
+   _v11 =  if _v6 then _v7 else _v10;
+   _v3 = structIn.indx_toChange;
+   _v1 = structIn.indx;
+   _v2 = _v1 + 1;
 tel
 -- end of node Gyroscope2::CFC_iter
 
@@ -10639,12 +10683,14 @@ returns (
 var
    acc_out:_Gyroscope2::CFF_struct;
    localtabToFill:_Gyroscope2::Valid_ChannelT;
+   _v1:A__Gyroscope2::Valid_ChannelT_3;
 let
     localtabToFill =
 	 _Gyroscope2::Valid_ChannelT{local_failure=false;local_value=0.0};
     acc_out = red<<Gyroscope2::CFC_iter,
-	4>>(_Gyroscope2::CFF_struct{indx=0;indx_toChange=currentChannelIndx;tabToFill=localtabToFill^3},
+	4>>(_Gyroscope2::CFF_struct{indx=0;indx_toChange=currentChannelIndx;tabToFill=_v1},
 	 allChannels);
+   _v1 = localtabToFill^3;
    foreignChannels = acc_out.tabToFill;
 tel
 -- end of node Gyroscope2::ComputeForeignChannels
@@ -10786,16 +10832,50 @@ returns (
 	outChannel:_Gyroscope2::Valid_ChannelT);
 var
    localChannel:_Gyroscope2::Valid_ChannelT;
+   _v6:real;
+   _v7:real;
+   _v8:real;
+   _v9:real;
+   _v10:bool;
+   _v11:real;
+   _v12:real;
+   _v13:real;
+   _v14:real;
+   _v15:real;
+   _v1:real;
+   _v2:real;
+   _v3:real;
+   _v4:real;
+   _v5:bool;
+   _v19:real;
+   _v16:bool;
+   _v17:bool;
+   _v18:bool;
 let
     localChannel =
-	_Gyroscope2::Valid_ChannelT{local_failure=Gyroscope2::abs(inChannel.valuea
-	- inChannel.valueb) > delta;local_value= if
-	Gyroscope2::abs(inChannel.valuea - inChannel.valueb) > delta then 0.0 else
-	 inChannel.valuea + inChannel.valueb / 2.0};
+	 _Gyroscope2::Valid_ChannelT{local_failure=_v5;local_value=_v15};
+   _v6 = inChannel.valuea;
+   _v7 = inChannel.valueb;
+   _v8 = _v6 - _v7;
+   _v9 = Gyroscope2::abs(_v8);
+   _v10 = _v9 > delta;
+   _v11 = inChannel.valuea;
+   _v12 = inChannel.valueb;
+   _v13 = _v11 + _v12;
+   _v14 = _v13 / 2.0;
+   _v15 =  if _v10 then 0.0 else _v14;
+   _v1 = inChannel.valuea;
+   _v2 = inChannel.valueb;
+   _v3 = _v1 - _v2;
+   _v4 = Gyroscope2::abs(_v3);
+   _v5 = _v4 > delta;
     outChannel =
-	_Gyroscope2::Valid_ChannelT{local_failure=localChannel.local_failure or
-	Gyroscope2::CrossFailDetect(nbInChannel, localChannel,
-	 previousOutChannel);local_value=localChannel.local_value};
+	 _Gyroscope2::Valid_ChannelT{local_failure=_v18;local_value=_v19};
+   _v19 = localChannel.local_value;
+   _v16 = localChannel.local_failure;
+    _v17 = Gyroscope2::CrossFailDetect(nbInChannel, localChannel,
+	 previousOutChannel);
+   _v18 = _v16 or _v17;
    nextOutChannel = previousOutChannel;
 tel
 -- end of node Gyroscope2::Channel
@@ -12813,32 +12893,34 @@ type _morel4::arrayi = A_int_2^3;
 node morel4::mcmorel(i:int) returns (t:A_int_2);
 var
    yo:_morel4::toto;
-   _v1:_morel4::tube;
-   _v2:int;
-   _v3:_morel4::tube;
-   _v4:int;
-   _v5:A_int_2;
-   _v6:int;
+   _v1:int;
+   _v2:_morel4::tube;
+   _v3:int;
+   _v4:_morel4::tube;
+   _v5:int;
+   _v6:A_int_2;
    _v7:int;
    _v8:int;
    _v9:int;
    _v10:int;
-   _v11:A_int_2;
+   _v11:int;
+   _v12:A_int_2;
 let
-   yo.titi = _morel4::tube{in=i;out=i + 1};
+   yo.titi = _morel4::tube{in=i;out=_v1};
+   _v1 = i + 1;
    yo.tutu = true;
-   t = _v5 -> _v11;
-   _v1 = yo.titi;
-   _v2 = _v1.in;
-   _v3 = yo.titi;
-   _v4 = _v3.out;
-   _v5 = [_v2, _v4];
-   _v6 = t[0];
-   _v7 = pre _v6;
-   _v8 = _v7 + 1;
-   _v9 = t[1];
-   _v10 = pre _v9;
-   _v11 = [_v8, _v10];
+   t = _v6 -> _v12;
+   _v2 = yo.titi;
+   _v3 = _v2.in;
+   _v4 = yo.titi;
+   _v5 = _v4.out;
+   _v6 = [_v3, _v5];
+   _v7 = t[0];
+   _v8 = pre _v7;
+   _v9 = _v8 + 1;
+   _v10 = t[1];
+   _v11 = pre _v10;
+   _v12 = [_v9, _v11];
 tel
 -- end of node morel4::mcmorel
 
@@ -13028,37 +13110,39 @@ tel
 node morel5::mcmorel(i:int) returns (t:A_int_2; u:A_A_int_2_2);
 var
    yo:_morel5::toto;
-   _v1:_morel5::tube;
-   _v2:int;
-   _v3:_morel5::tube;
-   _v4:int;
-   _v5:A_int_2;
-   _v6:int;
+   _v1:int;
+   _v2:_morel5::tube;
+   _v3:int;
+   _v4:_morel5::tube;
+   _v5:int;
+   _v6:A_int_2;
    _v7:int;
    _v8:int;
    _v9:int;
    _v10:int;
-   _v11:A_int_2;
+   _v11:int;
    _v12:A_int_2;
    _v13:A_int_2;
+   _v14:A_int_2;
 let
-   yo.titi = _morel5::tube{in=i;out=i + 1};
+   yo.titi = _morel5::tube{in=i;out=_v1};
+   _v1 = i + 1;
    yo.tutu = true;
-   t = _v5 -> _v11;
-   _v1 = yo.titi;
-   _v2 = _v1.in;
-   _v3 = yo.titi;
-   _v4 = _v3.out;
-   _v5 = [_v2, _v4];
-   _v6 = t[0];
-   _v7 = pre _v6;
-   _v8 = _v7 + 1;
-   _v9 = t[1];
-   _v10 = pre _v9;
-   _v11 = [_v8, _v10];
-   u = [_v12, _v13];
-   _v12 = [10, 100];
-   _v13 = [1000, 10000];
+   t = _v6 -> _v12;
+   _v2 = yo.titi;
+   _v3 = _v2.in;
+   _v4 = yo.titi;
+   _v5 = _v4.out;
+   _v6 = [_v3, _v5];
+   _v7 = t[0];
+   _v8 = pre _v7;
+   _v9 = _v8 + 1;
+   _v10 = t[1];
+   _v11 = pre _v10;
+   _v12 = [_v9, _v11];
+   u = [_v13, _v14];
+   _v13 = [10, 100];
+   _v14 = [1000, 10000];
 tel
 -- end of node morel5::mcmorel
 -- automatically defined aliases:
@@ -15752,6 +15836,11 @@ var
    _v3:real;
    _v4:real;
    _v5:bool;
+   _v6:real;
+   _v7:real;
+   _v8:real;
+   _v9:real;
+   _v10:real;
 let
    maintain = Gyroscope::Maintain(Gyroscope::TIME, _v5);
    _v1 = inChannel.valuea;
@@ -15760,8 +15849,12 @@ let
    _v4 = Gyroscope::abs(_v3);
    _v5 = _v4 > delta;
     outChannel =
-	_Gyroscope::Valid_ChannelT{local_failure=maintain;local_value= if maintain
-	 then 0.0 else inChannel.valuea + inChannel.valueb / 2.0};
+	 _Gyroscope::Valid_ChannelT{local_failure=maintain;local_value=_v10};
+   _v6 = inChannel.valuea;
+   _v7 = inChannel.valueb;
+   _v8 = _v6 + _v7;
+   _v9 = _v8 / 2.0;
+   _v10 =  if maintain then 0.0 else _v9;
 tel
 -- end of node Gyroscope::Channel
 
@@ -16044,10 +16137,19 @@ node produitBool::iterated_isElementOf_(
 	elt_in:bool) 
 returns (
 	acc_out:_produitBool::T_isElementOf_);
+var
+   _v2:bool;
+   _v3:bool;
+   _v4:bool;
+   _v5:bool;
+   _v1:bool;
 let
-    acc_out =
-	_produitBool::T_isElementOf_{eltToSearch=acc_in.eltToSearch;iselementof=acc_in.iselementof
-	 or acc_in.eltToSearch = elt_in};
+   acc_out = _produitBool::T_isElementOf_{eltToSearch=_v1;iselementof=_v5};
+   _v2 = acc_in.iselementof;
+   _v3 = acc_in.eltToSearch;
+   _v4 = _v3 = elt_in;
+   _v5 = _v2 or _v4;
+   _v1 = acc_in.eltToSearch;
 tel
 -- end of node produitBool::iterated_isElementOf_
 
@@ -16070,10 +16172,26 @@ node produitBool::selectOneStage(
 	currentElt:bool) 
 returns (
 	acc_out:_produitBool::iteratedStruct);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:bool;
+   _v8:bool;
+   _v3:int;
+   _v1:int;
+   _v2:int;
 let
-    acc_out = _produitBool::iteratedStruct{currentRank=acc_in.currentRank +
-	1;rankToSelect=acc_in.rankToSelect;elementSelected= if acc_in.currentRank =
-	 acc_in.rankToSelect then currentElt else acc_in.elementSelected};
+    acc_out =
+	 _produitBool::iteratedStruct{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8};
+   _v4 = acc_in.currentRank;
+   _v5 = acc_in.rankToSelect;
+   _v6 = _v4 = _v5;
+   _v7 = acc_in.elementSelected;
+   _v8 =  if _v6 then currentElt else _v7;
+   _v3 = acc_in.rankToSelect;
+   _v1 = acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node produitBool::selectOneStage
 
@@ -16084,10 +16202,12 @@ returns (
 	elementSelected:bool);
 var
    iterationResult:_produitBool::iteratedStruct;
+   _v1:bool;
 let
     iterationResult = red<<produitBool::selectOneStage,
-	10>>(_produitBool::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=array[0]},
+	10>>(_produitBool::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1},
 	 array);
+   _v1 = array[0];
    elementSelected = iterationResult.elementSelected;
 tel
 -- end of node produitBool::selectElementOfRank_inArray_
@@ -16098,37 +16218,44 @@ returns (
 	acc_out:_produitBool::Tacc_inShift2;
 	elt_out:bool);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
+   _v3:int;
    _v4:int;
+   _v2:int;
+   _v1:A_bool_10;
    _v5:int;
    _v6:int;
    _v7:bool;
-   _v8:bool;
+   _v8:int;
    _v9:int;
    _v10:int;
-   _v11:int;
-   _v12:A_bool_10;
-   _v13:bool;
+   _v11:bool;
+   _v12:bool;
+   _v13:int;
+   _v14:int;
+   _v15:int;
+   _v16:A_bool_10;
+   _v17:bool;
 let
     acc_out =
-	_produitBool::Tacc_inShift2{multiplieur=acc_in.multiplieur;rank=acc_in.rank;actual_rank=acc_in.actual_rank
-	 + 1};
-   elt_out =  if _v8 then _v13 else false;
-   _v1 = acc_in.actual_rank;
+	 _produitBool::Tacc_inShift2{multiplieur=_v1;rank=_v2;actual_rank=_v4};
+   _v3 = acc_in.actual_rank;
+   _v4 = _v3 + 1;
    _v2 = acc_in.rank;
-   _v3 = _v1 >= _v2;
-   _v4 = acc_in.actual_rank;
-   _v5 = acc_in.rank;
-   _v6 = _v5 + produitBool::size;
-   _v7 = _v4 < _v6;
-   _v8 = _v3 and _v7;
-   _v9 = acc_in.actual_rank;
-   _v10 = acc_in.rank;
-   _v11 = _v9 - _v10;
-   _v12 = acc_in.multiplieur;
-   _v13 = produitBool::selectElementOfRank_inArray_(_v11, _v12);
+   _v1 = acc_in.multiplieur;
+   elt_out =  if _v12 then _v17 else false;
+   _v5 = acc_in.actual_rank;
+   _v6 = acc_in.rank;
+   _v7 = _v5 >= _v6;
+   _v8 = acc_in.actual_rank;
+   _v9 = acc_in.rank;
+   _v10 = _v9 + produitBool::size;
+   _v11 = _v8 < _v10;
+   _v12 = _v7 and _v11;
+   _v13 = acc_in.actual_rank;
+   _v14 = acc_in.rank;
+   _v15 = _v13 - _v14;
+   _v16 = acc_in.multiplieur;
+   _v17 = produitBool::selectElementOfRank_inArray_(_v15, _v16);
 tel
 -- end of node produitBool::shiftFill
 
@@ -16138,9 +16265,13 @@ returns (
 	ligne:A_bool_20);
 var
    bidon:_produitBool::Tacc_inShift2;
+   _v2:int;
+   _v1:A_bool_10;
 let
     (bidon, ligne) = fill<<produitBool::shiftFill,
-	 20>>(_produitBool::Tacc_inShift2{multiplieur=acc_in.multiplieur;rank=acc_in.rank;actual_rank=0});
+	 20>>(_produitBool::Tacc_inShift2{multiplieur=_v1;rank=_v2;actual_rank=0});
+   _v2 = acc_in.rank;
+   _v1 = acc_in.multiplieur;
 tel
 -- end of node produitBool::shift
 
@@ -16201,11 +16332,26 @@ node shiftFill_ludic::n_selectOneStage(
 	i_currentElt:bool) 
 returns (
 	o_acc_out:_shiftFill_ludic::T3_STRUCT);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:bool;
+   _v8:bool;
+   _v3:int;
+   _v1:int;
+   _v2:int;
 let
-    o_acc_out = _shiftFill_ludic::T3_STRUCT{currentRank=i_acc_in.currentRank +
-	1;rankToSelect=i_acc_in.rankToSelect;elementSelected= if
-	i_acc_in.currentRank = i_acc_in.rankToSelect then i_currentElt else
-	 i_acc_in.elementSelected};
+    o_acc_out =
+	 _shiftFill_ludic::T3_STRUCT{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8};
+   _v4 = i_acc_in.currentRank;
+   _v5 = i_acc_in.rankToSelect;
+   _v6 = _v4 = _v5;
+   _v7 = i_acc_in.elementSelected;
+   _v8 =  if _v6 then i_currentElt else _v7;
+   _v3 = i_acc_in.rankToSelect;
+   _v1 = i_acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node shiftFill_ludic::n_selectOneStage
 
@@ -16216,10 +16362,12 @@ returns (
 	o_elementSelected:bool);
 var
    v_iterationResult:_shiftFill_ludic::T3_STRUCT;
+   _v1:bool;
 let
     v_iterationResult = red<<shiftFill_ludic::n_selectOneStage,
-	10>>(_shiftFill_ludic::T3_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=i_array[0]},
+	10>>(_shiftFill_ludic::T3_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1},
 	 i_array);
+   _v1 = i_array[0];
    o_elementSelected = v_iterationResult.elementSelected;
 tel
 -- end of node shiftFill_ludic::n_selectElementOfRank_inArray_
@@ -16230,33 +16378,40 @@ returns (
 	o_acc_out:_shiftFill_ludic::T2_STRUCT;
 	o_elt_out:bool);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
+   _v3:int;
    _v4:int;
+   _v2:int;
+   _v1:A_bool_10;
    _v5:int;
    _v6:int;
    _v7:bool;
-   _v8:bool;
+   _v8:int;
    _v9:int;
-   _v10:A_bool_10;
+   _v10:int;
    _v11:bool;
+   _v12:bool;
+   _v13:int;
+   _v14:A_bool_10;
+   _v15:bool;
 let
     o_acc_out =
-	_shiftFill_ludic::T2_STRUCT{multiplieur=i_acc_in.multiplieur;rank=i_acc_in.rank;actual_rank=i_acc_in.actual_rank
-	 + 1};
-   o_elt_out =  if _v8 then _v11 else false;
-   _v1 = i_acc_in.actual_rank;
+	 _shiftFill_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=_v4};
+   _v3 = i_acc_in.actual_rank;
+   _v4 = _v3 + 1;
    _v2 = i_acc_in.rank;
-   _v3 = _v1 >= _v2;
-   _v4 = i_acc_in.actual_rank;
-   _v5 = i_acc_in.rank;
-   _v6 = _v5 + shiftFill_ludic::c_size;
-   _v7 = _v4 < _v6;
-   _v8 = _v3 and _v7;
-   _v9 = i_acc_in.actual_rank;
-   _v10 = i_acc_in.multiplieur;
-   _v11 = shiftFill_ludic::n_selectElementOfRank_inArray_(_v9, _v10);
+   _v1 = i_acc_in.multiplieur;
+   o_elt_out =  if _v12 then _v15 else false;
+   _v5 = i_acc_in.actual_rank;
+   _v6 = i_acc_in.rank;
+   _v7 = _v5 >= _v6;
+   _v8 = i_acc_in.actual_rank;
+   _v9 = i_acc_in.rank;
+   _v10 = _v9 + shiftFill_ludic::c_size;
+   _v11 = _v8 < _v10;
+   _v12 = _v7 and _v11;
+   _v13 = i_acc_in.actual_rank;
+   _v14 = i_acc_in.multiplieur;
+   _v15 = shiftFill_ludic::n_selectElementOfRank_inArray_(_v13, _v14);
 tel
 -- end of node shiftFill_ludic::n_shiftFill
 -- automatically defined aliases:
@@ -16284,11 +16439,26 @@ node shift_ludic::n_selectOneStage(
 	i_currentElt:bool) 
 returns (
 	o_acc_out:_shift_ludic::T4_STRUCT);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:bool;
+   _v8:bool;
+   _v3:int;
+   _v1:int;
+   _v2:int;
 let
-    o_acc_out = _shift_ludic::T4_STRUCT{currentRank=i_acc_in.currentRank +
-	1;rankToSelect=i_acc_in.rankToSelect;elementSelected= if
-	i_acc_in.currentRank = i_acc_in.rankToSelect then i_currentElt else
-	 i_acc_in.elementSelected};
+    o_acc_out =
+	 _shift_ludic::T4_STRUCT{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8};
+   _v4 = i_acc_in.currentRank;
+   _v5 = i_acc_in.rankToSelect;
+   _v6 = _v4 = _v5;
+   _v7 = i_acc_in.elementSelected;
+   _v8 =  if _v6 then i_currentElt else _v7;
+   _v3 = i_acc_in.rankToSelect;
+   _v1 = i_acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node shift_ludic::n_selectOneStage
 
@@ -16299,10 +16469,12 @@ returns (
 	o_elementSelected:bool);
 var
    v_iterationResult:_shift_ludic::T4_STRUCT;
+   _v1:bool;
 let
     v_iterationResult = red<<shift_ludic::n_selectOneStage,
-	10>>(_shift_ludic::T4_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=i_array[0]},
+	10>>(_shift_ludic::T4_STRUCT{currentRank=0;rankToSelect=i_rankToSelect;elementSelected=_v1},
 	 i_array);
+   _v1 = i_array[0];
    o_elementSelected = v_iterationResult.elementSelected;
 tel
 -- end of node shift_ludic::n_selectElementOfRank_inArray_
@@ -16313,33 +16485,40 @@ returns (
 	o_acc_out:_shift_ludic::T2_STRUCT;
 	o_elt_out:bool);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
+   _v3:int;
    _v4:int;
+   _v2:int;
+   _v1:A_bool_10;
    _v5:int;
    _v6:int;
    _v7:bool;
-   _v8:bool;
+   _v8:int;
    _v9:int;
-   _v10:A_bool_10;
+   _v10:int;
    _v11:bool;
+   _v12:bool;
+   _v13:int;
+   _v14:A_bool_10;
+   _v15:bool;
 let
     o_acc_out =
-	_shift_ludic::T2_STRUCT{multiplieur=i_acc_in.multiplieur;rank=i_acc_in.rank;actual_rank=i_acc_in.actual_rank
-	 + 1};
-   o_elt_out =  if _v8 then _v11 else false;
-   _v1 = i_acc_in.actual_rank;
+	 _shift_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=_v4};
+   _v3 = i_acc_in.actual_rank;
+   _v4 = _v3 + 1;
    _v2 = i_acc_in.rank;
-   _v3 = _v1 >= _v2;
-   _v4 = i_acc_in.actual_rank;
-   _v5 = i_acc_in.rank;
-   _v6 = _v5 + shift_ludic::c_size;
-   _v7 = _v4 < _v6;
-   _v8 = _v3 and _v7;
-   _v9 = i_acc_in.actual_rank;
-   _v10 = i_acc_in.multiplieur;
-   _v11 = shift_ludic::n_selectElementOfRank_inArray_(_v9, _v10);
+   _v1 = i_acc_in.multiplieur;
+   o_elt_out =  if _v12 then _v15 else false;
+   _v5 = i_acc_in.actual_rank;
+   _v6 = i_acc_in.rank;
+   _v7 = _v5 >= _v6;
+   _v8 = i_acc_in.actual_rank;
+   _v9 = i_acc_in.rank;
+   _v10 = _v9 + shift_ludic::c_size;
+   _v11 = _v8 < _v10;
+   _v12 = _v7 and _v11;
+   _v13 = i_acc_in.actual_rank;
+   _v14 = i_acc_in.multiplieur;
+   _v15 = shift_ludic::n_selectElementOfRank_inArray_(_v13, _v14);
 tel
 -- end of node shift_ludic::n_shiftFill
 
@@ -16349,9 +16528,13 @@ returns (
 	o_ligne:A_bool_20);
 var
    v_bidon:_shift_ludic::T2_STRUCT;
+   _v2:int;
+   _v1:A_bool_10;
 let
     (v_bidon, o_ligne) = fill<<shift_ludic::n_shiftFill,
-	 20>>(_shift_ludic::T2_STRUCT{multiplieur=i_acc_in.multiplieur;rank=i_acc_in.rank;actual_rank=0});
+	 20>>(_shift_ludic::T2_STRUCT{multiplieur=_v1;rank=_v2;actual_rank=0});
+   _v2 = i_acc_in.rank;
+   _v1 = i_acc_in.multiplieur;
 tel
 -- end of node shift_ludic::n_shift
 -- automatically defined aliases:
@@ -16525,28 +16708,59 @@ returns (
 var
    _v1:int;
    _v2:bool;
-   _v3:int;
-   _v4:bool;
+   _v7:int;
+   _v8:int;
+   _v6:int;
    _v5:int;
-   _v6:bool;
-   _v7:bool;
-   _v8:_calculs_max::struct_max;
+   _v4:int;
+   _v3:int;
+   _v9:int;
+   _v10:bool;
+   _v11:int;
+   _v12:bool;
+   _v13:bool;
+   _v17:int;
+   _v18:int;
+   _v16:int;
+   _v15:int;
+   _v14:int;
+   _v22:int;
+   _v23:int;
+   _v21:int;
+   _v20:int;
+   _v19:int;
+   _v24:_calculs_max::struct_max;
 let
     strout =  if _v2 then
-	_calculs_max::struct_max{max1=strin.max1;max2=strin.max2;imax1=strin.imax1;imax2=strin.imax2;icourant=strin.icourant
-	 + 1} else _v8;
+	_calculs_max::struct_max{max1=_v3;max2=_v4;imax1=_v5;imax2=_v6;icourant=_v8}
+	 else _v24;
    _v1 = strin.max2;
    _v2 = ecourant <= _v1;
-   _v3 = strin.max2;
-   _v4 = ecourant > _v3;
-   _v5 = strin.max1;
-   _v6 = ecourant <= _v5;
-   _v7 = _v4 and _v6;
-    _v8 =  if _v7 then
-	_calculs_max::struct_max{max1=strin.max1;max2=ecourant;imax1=strin.imax1;imax2=strin.icourant;icourant=strin.icourant
-	+ 1} else
-	_calculs_max::struct_max{max1=ecourant;max2=strin.max1;imax1=strin.icourant;imax2=strin.imax1;icourant=strin.icourant
-	 + 1};
+   _v7 = strin.icourant;
+   _v8 = _v7 + 1;
+   _v6 = strin.imax2;
+   _v5 = strin.imax1;
+   _v4 = strin.max2;
+   _v3 = strin.max1;
+   _v9 = strin.max2;
+   _v10 = ecourant > _v9;
+   _v11 = strin.max1;
+   _v12 = ecourant <= _v11;
+   _v13 = _v10 and _v12;
+   _v17 = strin.icourant;
+   _v18 = _v17 + 1;
+   _v16 = strin.icourant;
+   _v15 = strin.imax1;
+   _v14 = strin.max1;
+   _v22 = strin.icourant;
+   _v23 = _v22 + 1;
+   _v21 = strin.imax1;
+   _v20 = strin.icourant;
+   _v19 = strin.max1;
+    _v24 =  if _v13 then
+	_calculs_max::struct_max{max1=_v14;max2=ecourant;imax1=_v15;imax2=_v16;icourant=_v18}
+	else
+	 _calculs_max::struct_max{max1=ecourant;max2=_v19;imax1=_v20;imax2=_v21;icourant=_v23};
 tel
 -- end of node calculs_max::max
 
@@ -16556,35 +16770,49 @@ returns (
 	s_out:_calculs_max::struct_fill_bool;
 	elt:bool);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
+   _v3:int;
    _v4:int;
+   _v2:int;
+   _v1:int;
    _v5:int;
-   _v6:bool;
+   _v6:int;
+   _v7:bool;
+   _v8:int;
+   _v9:int;
+   _v10:bool;
 let
-    s_out =
-	_calculs_max::struct_fill_bool{imax1=s_in.imax1;imax2=s_in.imax2;icourant=s_in.icourant
-	 + 1};
-   elt = _v3 or _v6;
-   _v1 = s_in.icourant;
-   _v2 = s_in.imax1;
-   _v3 = _v1 = _v2;
-   _v4 = s_in.icourant;
-   _v5 = s_in.imax2;
-   _v6 = _v4 = _v5;
+   s_out = _calculs_max::struct_fill_bool{imax1=_v1;imax2=_v2;icourant=_v4};
+   _v3 = s_in.icourant;
+   _v4 = _v3 + 1;
+   _v2 = s_in.imax2;
+   _v1 = s_in.imax1;
+   elt = _v7 or _v10;
+   _v5 = s_in.icourant;
+   _v6 = s_in.imax1;
+   _v7 = _v5 = _v6;
+   _v8 = s_in.icourant;
+   _v9 = s_in.imax2;
+   _v10 = _v8 = _v9;
 tel
 -- end of node calculs_max::fill_bool
 node calculs_max::calculs_max(A:A_int_10) returns (res:A_bool_10);
 var
    local_struct:_calculs_max::struct_max;
    tmp:_calculs_max::struct_fill_bool;
+   _v2:int;
+   _v1:int;
+   _v4:int;
+   _v3:int;
 let
     local_struct = red<<calculs_max::max,
-	10>>(_calculs_max::struct_max{max1=0;max2=0;imax1=-1;imax2=-1;icourant=0},
+	10>>(_calculs_max::struct_max{max1=0;max2=0;imax1=_v1;imax2=_v2;icourant=0},
 	 A);
+   _v2 = -1;
+   _v1 = -1;
     (tmp, res) = fill<<calculs_max::fill_bool,
-	 10>>(_calculs_max::struct_fill_bool{imax1=local_struct.imax1;imax2=local_struct.imax2;icourant=0});
+	 10>>(_calculs_max::struct_fill_bool{imax1=_v3;imax2=_v4;icourant=0});
+   _v4 = local_struct.imax2;
+   _v3 = local_struct.imax1;
 tel
 -- end of node calculs_max::calculs_max
 -- automatically defined aliases:
@@ -16612,6 +16840,10 @@ var
    _v5:bool;
    _v6:bool;
    _v7:bool;
+   _v9:bool;
+   _v10:bool;
+   _v11:bool;
+   _v8:bool;
 let
    ackout = _v4 and _v7;
    _v1 = accu_in.token;
@@ -16621,8 +16853,11 @@ let
    _v5 = pre ackout;
    _v6 = false -> _v5;
    _v7 = not _v6;
-    accu_out = _deSimone::cell_accu{token=accu_in.token;grant=not req and
-	 accu_in.grant};
+   accu_out = _deSimone::cell_accu{token=_v8;grant=_v11};
+   _v9 = not req;
+   _v10 = accu_in.grant;
+   _v11 = _v9 and _v10;
+   _v8 = accu_in.token;
 tel
 -- end of node deSimone::oneCell
 
@@ -16921,10 +17156,27 @@ node moyenne::moyenne_step(
 	elt_in:real) 
 returns (
 	accu_out:_moyenne::moyenne_accu);
+var
+   _v8:real;
+   _v9:real;
+   _v3:real;
+   _v4:real;
+   _v5:real;
+   _v6:real;
+   _v7:real;
+   _v1:real;
+   _v2:real;
 let
-    accu_out = _moyenne::moyenne_accu{sum=accu_in.sum +
-	elt_in;moyenne=accu_in.sum + elt_in / accu_in.rank + 1.0;rank=accu_in.rank
-	 + 1.0};
+   accu_out = _moyenne::moyenne_accu{sum=_v2;moyenne=_v7;rank=_v9};
+   _v8 = accu_in.rank;
+   _v9 = _v8 + 1.0;
+   _v3 = accu_in.sum;
+   _v4 = _v3 + elt_in;
+   _v5 = accu_in.rank;
+   _v6 = _v5 + 1.0;
+   _v7 = _v4 / _v6;
+   _v1 = accu_in.sum;
+   _v2 = _v1 + elt_in;
 tel
 -- end of node moyenne::moyenne_step
 node moyenne::moyenne(Tab:A_real_10) returns (moy:real);
@@ -17102,9 +17354,13 @@ node normal::extract_info_chg_glob(
 	EntreeGlob:_normal::T_EntreeGlob) 
 returns (
 	InfoChgGlob:_normal::T_InfoChgGlob);
+var
+   _v1:A_int_20;
+   _v2:A_int_20;
 let
-    InfoChgGlob = _normal::T_InfoChgGlob{chg2gen=map<<normal::id,
-	 20>>(EntreeGlob.chg2gen)};
+   InfoChgGlob = _normal::T_InfoChgGlob{chg2gen=_v2};
+   _v1 = EntreeGlob.chg2gen;
+   _v2 = map<<normal::id, 20>>(_v1);
 tel
 -- end of node normal::extract_info_chg_glob
 
@@ -17190,9 +17446,13 @@ node normal::extract_info_gen_glob(
 	EntreeGlob:_normal::T_EntreeGlob) 
 returns (
 	InfoGenGlob:_normal::T_InfoGenGlob);
+var
+   _v1:A_int_20;
+   _v2:A_int_20;
 let
-    InfoGenGlob = _normal::T_InfoGenGlob{elt_bidon=0;chg2gen=map<<normal::id,
-	 20>>(EntreeGlob.chg2gen)};
+   InfoGenGlob = _normal::T_InfoGenGlob{elt_bidon=0;chg2gen=_v2};
+   _v1 = EntreeGlob.chg2gen;
+   _v2 = map<<normal::id, 20>>(_v1);
 tel
 -- end of node normal::extract_info_gen_glob
 
@@ -17669,9 +17929,13 @@ node testSilus::extract_info_chg_glob(
 	EntreeGlob:_testSilus::T_EntreeGlob) 
 returns (
 	InfoChgGlob:_testSilus::T_InfoChgGlob);
+var
+   _v1:A_int_20;
+   _v2:A_int_20;
 let
-    InfoChgGlob = _testSilus::T_InfoChgGlob{chg2gen=map<<testSilus::id,
-	 20>>(EntreeGlob.chg2gen)};
+   InfoChgGlob = _testSilus::T_InfoChgGlob{chg2gen=_v2};
+   _v1 = EntreeGlob.chg2gen;
+   _v2 = map<<testSilus::id, 20>>(_v1);
 tel
 -- end of node testSilus::extract_info_chg_glob
 
@@ -17740,10 +18004,13 @@ node testSilus::extract_info_gen_glob(
 	EntreeGlob:_testSilus::T_EntreeGlob) 
 returns (
 	InfoGenGlob:_testSilus::T_InfoGenGlob);
-let
-    InfoGenGlob =
-	_testSilus::T_InfoGenGlob{elt_bidon=0;chg2gen=map<<testSilus::id,
-	 20>>(EntreeGlob.chg2gen)};
+var
+   _v1:A_int_20;
+   _v2:A_int_20;
+let
+   InfoGenGlob = _testSilus::T_InfoGenGlob{elt_bidon=0;chg2gen=_v2};
+   _v1 = EntreeGlob.chg2gen;
+   _v2 = map<<testSilus::id, 20>>(_v1);
 tel
 -- end of node testSilus::extract_info_gen_glob
 
@@ -17863,15 +18130,84 @@ node triSel::minFromRank(
 	TabEltIn:int) 
 returns (
 	accu_out:_triSel::MinFR_accu);
+var
+   _v36:int;
+   _v37:int;
+   _v35:int;
+   _v17:int;
+   _v18:bool;
+   _v19:int;
+   _v20:int;
+   _v21:bool;
+   _v22:bool;
+   _v23:int;
+   _v24:int;
+   _v25:int;
+   _v26:bool;
+   _v27:int;
+   _v28:bool;
+   _v29:int;
+   _v30:int;
+   _v31:int;
+   _v32:int;
+   _v33:int;
+   _v34:int;
+   _v1:int;
+   _v2:bool;
+   _v3:int;
+   _v4:int;
+   _v5:bool;
+   _v6:bool;
+   _v7:int;
+   _v8:int;
+   _v9:bool;
+   _v10:int;
+   _v11:bool;
+   _v12:int;
+   _v13:int;
+   _v14:int;
+   _v15:int;
+   _v16:int;
 let
-    accu_out = _triSel::MinFR_accu{MinVal= if accu_in.Rank = 0 or accu_in.Rank
-	= accu_in.RankFrom then TabEltIn else  if accu_in.Rank >= accu_in.RankFrom
-	then  if TabEltIn < accu_in.MinVal then TabEltIn else accu_in.MinVal else
-	accu_in.MinVal;MinRank= if accu_in.Rank = 0 or accu_in.Rank =
-	accu_in.RankFrom then accu_in.Rank else  if accu_in.Rank >=
-	accu_in.RankFrom then  if TabEltIn < accu_in.MinVal then accu_in.Rank else
-	accu_in.MinRank else
-	 accu_in.MinRank;RankFrom=accu_in.RankFrom;Rank=accu_in.Rank + 1};
+    accu_out =
+	 _triSel::MinFR_accu{MinVal=_v16;MinRank=_v34;RankFrom=_v35;Rank=_v37};
+   _v36 = accu_in.Rank;
+   _v37 = _v36 + 1;
+   _v35 = accu_in.RankFrom;
+   _v17 = accu_in.Rank;
+   _v18 = _v17 = 0;
+   _v19 = accu_in.Rank;
+   _v20 = accu_in.RankFrom;
+   _v21 = _v19 = _v20;
+   _v22 = _v18 or _v21;
+   _v23 = accu_in.Rank;
+   _v24 = accu_in.Rank;
+   _v25 = accu_in.RankFrom;
+   _v26 = _v24 >= _v25;
+   _v27 = accu_in.MinVal;
+   _v28 = TabEltIn < _v27;
+   _v29 = accu_in.Rank;
+   _v30 = accu_in.MinRank;
+   _v31 =  if _v28 then _v29 else _v30;
+   _v32 = accu_in.MinRank;
+   _v33 =  if _v26 then _v31 else _v32;
+   _v34 =  if _v22 then _v23 else _v33;
+   _v1 = accu_in.Rank;
+   _v2 = _v1 = 0;
+   _v3 = accu_in.Rank;
+   _v4 = accu_in.RankFrom;
+   _v5 = _v3 = _v4;
+   _v6 = _v2 or _v5;
+   _v7 = accu_in.Rank;
+   _v8 = accu_in.RankFrom;
+   _v9 = _v7 >= _v8;
+   _v10 = accu_in.MinVal;
+   _v11 = TabEltIn < _v10;
+   _v12 = accu_in.MinVal;
+   _v13 =  if _v11 then TabEltIn else _v12;
+   _v14 = accu_in.MinVal;
+   _v15 =  if _v9 then _v13 else _v14;
+   _v16 =  if _v6 then TabEltIn else _v15;
 tel
 -- end of node triSel::minFromRank
 
@@ -17880,11 +18216,25 @@ node triSel::select(
 	elt:int) 
 returns (
 	accu_out:_triSel::Select_accu);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:int;
+   _v2:int;
+   _v3:int;
+   _v1:int;
 let
-    accu_out =
-	_triSel::Select_accu{RankToFind=accu_in.RankToFind;CurrentRank=accu_in.CurrentRank
-	+ 1;Val= if accu_in.RankToFind = accu_in.CurrentRank then elt else
-	 accu_in.Val};
+   accu_out = _triSel::Select_accu{RankToFind=_v1;CurrentRank=_v3;Val=_v8};
+   _v4 = accu_in.RankToFind;
+   _v5 = accu_in.CurrentRank;
+   _v6 = _v4 = _v5;
+   _v7 = accu_in.Val;
+   _v8 =  if _v6 then elt else _v7;
+   _v2 = accu_in.CurrentRank;
+   _v3 = _v2 + 1;
+   _v1 = accu_in.RankToFind;
 tel
 -- end of node triSel::select
 
@@ -17895,29 +18245,40 @@ returns (
 	accu_out:_triSel::Exchange_accu;
 	eltOut:int);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
-   _v4:int;
    _v5:int;
    _v6:int;
-   _v7:bool;
+   _v4:int;
+   _v3:int;
+   _v2:int;
+   _v1:int;
+   _v7:int;
    _v8:int;
-   _v9:int;
+   _v9:bool;
+   _v10:int;
+   _v11:int;
+   _v12:int;
+   _v13:bool;
+   _v14:int;
+   _v15:int;
 let
     accu_out =
-	_triSel::Exchange_accu{MinVal=accu_in.MinVal;MinRank=accu_in.MinRank;RankFrom=accu_in.RankFrom;CurrentVal=accu_in.CurrentVal;Rank=accu_in.Rank
-	 + 1};
-   eltOut =  if _v3 then _v4 else _v9;
-   _v1 = accu_in.Rank;
-   _v2 = accu_in.MinRank;
-   _v3 = _v1 = _v2;
-   _v4 = accu_in.CurrentVal;
+	 _triSel::Exchange_accu{MinVal=_v1;MinRank=_v2;RankFrom=_v3;CurrentVal=_v4;Rank=_v6};
    _v5 = accu_in.Rank;
-   _v6 = accu_in.RankFrom;
-   _v7 = _v5 = _v6;
-   _v8 = accu_in.MinVal;
-   _v9 =  if _v7 then _v8 else eltIn;
+   _v6 = _v5 + 1;
+   _v4 = accu_in.CurrentVal;
+   _v3 = accu_in.RankFrom;
+   _v2 = accu_in.MinRank;
+   _v1 = accu_in.MinVal;
+   eltOut =  if _v9 then _v10 else _v15;
+   _v7 = accu_in.Rank;
+   _v8 = accu_in.MinRank;
+   _v9 = _v7 = _v8;
+   _v10 = accu_in.CurrentVal;
+   _v11 = accu_in.Rank;
+   _v12 = accu_in.RankFrom;
+   _v13 = _v11 = _v12;
+   _v14 = accu_in.MinVal;
+   _v15 =  if _v13 then _v14 else eltIn;
 tel
 -- end of node triSel::Exchange_i_j
 
@@ -17931,24 +18292,37 @@ var
    accu_out_min:_triSel::MinFR_accu;
    accu_out_exchange:_triSel::Exchange_accu;
    localTab:A_int_50;
-   _v1:A_int_50;
+   _v1:int;
    _v2:A_int_50;
-   _v3:A_int_50;
+   _v3:int;
+   _v4:A_int_50;
+   _v8:int;
+   _v7:int;
+   _v6:int;
+   _v5:int;
+   _v9:A_int_50;
+   _v10:int;
+   _v11:int;
 let
     accu_out_min = red<<triSel::minFromRank,
-	50>>(_triSel::MinFR_accu{MinVal=0;MinRank=0;RankFrom=accu_in.CurrentRank;Rank=0},
-	 _v1);
-   _v1 = accu_in.Tab;
-    accu_out_select = red<<triSel::select,
-	50>>(_triSel::Select_accu{RankToFind=accu_in.CurrentRank;CurrentRank=0;Val=0},
-	 _v2);
+	 50>>(_triSel::MinFR_accu{MinVal=0;MinRank=0;RankFrom=_v1;Rank=0}, _v2);
+   _v1 = accu_in.CurrentRank;
    _v2 = accu_in.Tab;
+    accu_out_select = red<<triSel::select,
+	 50>>(_triSel::Select_accu{RankToFind=_v3;CurrentRank=0;Val=0}, _v4);
+   _v3 = accu_in.CurrentRank;
+   _v4 = accu_in.Tab;
     (accu_out_exchange, localTab) = fillred<<triSel::Exchange_i_j,
-	50>>(_triSel::Exchange_accu{MinVal=accu_out_min.MinVal;MinRank=accu_out_min.MinRank;RankFrom=accu_out_select.RankToFind;CurrentVal=accu_out_select.Val;Rank=0},
-	 _v3);
-   _v3 = accu_in.Tab;
-    accu_out = _triSel::Sort_accu{CurrentRank=accu_in.CurrentRank +
-	 1;Tab=localTab};
+	50>>(_triSel::Exchange_accu{MinVal=_v5;MinRank=_v6;RankFrom=_v7;CurrentVal=_v8;Rank=0},
+	 _v9);
+   _v8 = accu_out_select.Val;
+   _v7 = accu_out_select.RankToFind;
+   _v6 = accu_out_min.MinRank;
+   _v5 = accu_out_min.MinVal;
+   _v9 = accu_in.Tab;
+   accu_out = _triSel::Sort_accu{CurrentRank=_v11;Tab=localTab};
+   _v10 = accu_in.CurrentRank;
+   _v11 = _v10 + 1;
 tel
 -- end of node triSel::UnarySort
 node triSel::triSel(TIn:A_int_50) returns (TSorted:A_int_50);
@@ -17966,10 +18340,17 @@ node triSel::sorted_iter(
 	elt:int) 
 returns (
 	accu_out:_triSel::sorted_iter_accu);
+var
+   _v1:int;
+   _v2:bool;
+   _v3:bool;
+   _v4:bool;
 let
-    accu_out =
-	_triSel::sorted_iter_accu{prev_elt=elt;prop_is_tt=accu_in.prev_elt <= elt
-	 and accu_in.prop_is_tt};
+   accu_out = _triSel::sorted_iter_accu{prev_elt=elt;prop_is_tt=_v4};
+   _v1 = accu_in.prev_elt;
+   _v2 = _v1 <= elt;
+   _v3 = accu_in.prop_is_tt;
+   _v4 = _v2 and _v3;
 tel
 -- end of node triSel::sorted_iter
 node triSel::Sorted(TIn:A_int_50) returns (ok:bool);
@@ -18044,11 +18425,26 @@ node contractForElementSelectionInArray::selectOneStage(
 	currentElt:int) 
 returns (
 	acc_out:_contractForElementSelectionInArray::iteratedStruct);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:int;
+   _v3:int;
+   _v1:int;
+   _v2:int;
 let
     acc_out =
-	_contractForElementSelectionInArray::iteratedStruct{currentRank=acc_in.currentRank
-	+ 1;rankToSelect=acc_in.rankToSelect;elementSelected= if acc_in.currentRank
-	 = acc_in.rankToSelect then currentElt else acc_in.elementSelected};
+	 _contractForElementSelectionInArray::iteratedStruct{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8};
+   _v4 = acc_in.currentRank;
+   _v5 = acc_in.rankToSelect;
+   _v6 = _v4 = _v5;
+   _v7 = acc_in.elementSelected;
+   _v8 =  if _v6 then currentElt else _v7;
+   _v3 = acc_in.rankToSelect;
+   _v1 = acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node contractForElementSelectionInArray::selectOneStage
 
@@ -18098,10 +18494,19 @@ node intArray::iterated_isElementOf_(
 	elt_in:int) 
 returns (
 	acc_out:_intArray::T_isElementOf_);
+var
+   _v2:bool;
+   _v3:int;
+   _v4:bool;
+   _v5:bool;
+   _v1:int;
 let
-    acc_out =
-	_intArray::T_isElementOf_{eltToSearch=acc_in.eltToSearch;iselementof=acc_in.iselementof
-	 or intArray::_isEqualTo_(acc_in.eltToSearch, elt_in)};
+   acc_out = _intArray::T_isElementOf_{eltToSearch=_v1;iselementof=_v5};
+   _v2 = acc_in.iselementof;
+   _v3 = acc_in.eltToSearch;
+   _v4 = intArray::_isEqualTo_(_v3, elt_in);
+   _v5 = _v2 or _v4;
+   _v1 = acc_in.eltToSearch;
 tel
 -- end of node intArray::iterated_isElementOf_
 
@@ -18135,10 +18540,18 @@ node intArray::isLocallyLoselySorted(
 	elt:int) 
 returns (
 	acc_out:_intArray::forSortingAlgo);
+var
+   _v1:int;
+   _v2:bool;
+   _v3:bool;
+   _v4:bool;
 let
     acc_out =
-	_intArray::forSortingAlgo{previousElement=elt;sortedUpToHere=intArray::_isGreaterOrEqualTo_(elt,
-	 acc_in.previousElement) and acc_in.sortedUpToHere};
+	 _intArray::forSortingAlgo{previousElement=elt;sortedUpToHere=_v4};
+   _v1 = acc_in.previousElement;
+   _v2 = intArray::_isGreaterOrEqualTo_(elt, _v1);
+   _v3 = acc_in.sortedUpToHere;
+   _v4 = _v2 and _v3;
 tel
 -- end of node intArray::isLocallyLoselySorted
 
@@ -18148,10 +18561,12 @@ returns (
 	array_isLoselySorted:bool);
 var
    result:_intArray::forSortingAlgo;
+   _v1:int;
 let
     result = red<<intArray::isLocallyLoselySorted,
-	10>>(_intArray::forSortingAlgo{previousElement=array[0];sortedUpToHere=true},
+	10>>(_intArray::forSortingAlgo{previousElement=_v1;sortedUpToHere=true},
 	 array);
+   _v1 = array[0];
    array_isLoselySorted = result.sortedUpToHere;
 tel
 -- end of node intArray::_isLoselySorted
@@ -18165,13 +18580,62 @@ node intArray::minFromRank(
 	TabEltIn:int) 
 returns (
 	accu_out:_intArray::MinFR_accu);
+var
+   _v25:int;
+   _v26:int;
+   _v24:int;
+   _v14:int;
+   _v15:int;
+   _v16:bool;
+   _v17:int;
+   _v18:bool;
+   _v19:int;
+   _v20:int;
+   _v21:int;
+   _v22:int;
+   _v23:int;
+   _v1:int;
+   _v2:int;
+   _v3:bool;
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:bool;
+   _v9:int;
+   _v10:int;
+   _v11:int;
+   _v12:int;
+   _v13:int;
 let
-    accu_out = _intArray::MinFR_accu{MinVal= if accu_in.Rank <=
-	accu_in.RankFrom then TabEltIn else  if accu_in.Rank >= accu_in.RankFrom
-	then  if TabEltIn < accu_in.MinVal then TabEltIn else accu_in.MinVal else
-	accu_in.MinVal;MinRank= if accu_in.Rank > accu_in.RankFrom then  if
-	TabEltIn < accu_in.MinVal then accu_in.Rank else accu_in.MinRank else
-	 accu_in.MinRank;RankFrom=accu_in.RankFrom;Rank=accu_in.Rank + 1};
+    accu_out =
+	 _intArray::MinFR_accu{MinVal=_v13;MinRank=_v23;RankFrom=_v24;Rank=_v26};
+   _v25 = accu_in.Rank;
+   _v26 = _v25 + 1;
+   _v24 = accu_in.RankFrom;
+   _v14 = accu_in.Rank;
+   _v15 = accu_in.RankFrom;
+   _v16 = _v14 > _v15;
+   _v17 = accu_in.MinVal;
+   _v18 = TabEltIn < _v17;
+   _v19 = accu_in.Rank;
+   _v20 = accu_in.MinRank;
+   _v21 =  if _v18 then _v19 else _v20;
+   _v22 = accu_in.MinRank;
+   _v23 =  if _v16 then _v21 else _v22;
+   _v1 = accu_in.Rank;
+   _v2 = accu_in.RankFrom;
+   _v3 = _v1 <= _v2;
+   _v4 = accu_in.Rank;
+   _v5 = accu_in.RankFrom;
+   _v6 = _v4 >= _v5;
+   _v7 = accu_in.MinVal;
+   _v8 = TabEltIn < _v7;
+   _v9 = accu_in.MinVal;
+   _v10 =  if _v8 then TabEltIn else _v9;
+   _v11 = accu_in.MinVal;
+   _v12 =  if _v6 then _v10 else _v11;
+   _v13 =  if _v3 then TabEltIn else _v12;
 tel
 -- end of node intArray::minFromRank
 
@@ -18180,11 +18644,25 @@ node intArray::select(
 	elt:int) 
 returns (
 	accu_out:_intArray::Select_accu);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:int;
+   _v2:int;
+   _v3:int;
+   _v1:int;
 let
-    accu_out =
-	_intArray::Select_accu{RankToFind=accu_in.RankToFind;CurrentRank=accu_in.CurrentRank
-	+ 1;Val= if accu_in.RankToFind = accu_in.CurrentRank then elt else
-	 accu_in.Val};
+   accu_out = _intArray::Select_accu{RankToFind=_v1;CurrentRank=_v3;Val=_v8};
+   _v4 = accu_in.RankToFind;
+   _v5 = accu_in.CurrentRank;
+   _v6 = _v4 = _v5;
+   _v7 = accu_in.Val;
+   _v8 =  if _v6 then elt else _v7;
+   _v2 = accu_in.CurrentRank;
+   _v3 = _v2 + 1;
+   _v1 = accu_in.RankToFind;
 tel
 -- end of node intArray::select
 
@@ -18195,29 +18673,40 @@ returns (
 	accu_out:_intArray::Exchange_accu;
 	eltOut:int);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
-   _v4:int;
    _v5:int;
    _v6:int;
-   _v7:bool;
+   _v4:int;
+   _v3:int;
+   _v2:int;
+   _v1:int;
+   _v7:int;
    _v8:int;
-   _v9:int;
+   _v9:bool;
+   _v10:int;
+   _v11:int;
+   _v12:int;
+   _v13:bool;
+   _v14:int;
+   _v15:int;
 let
     accu_out =
-	_intArray::Exchange_accu{MinVal=accu_in.MinVal;MinRank=accu_in.MinRank;RankFrom=accu_in.RankFrom;CurrentVal=accu_in.CurrentVal;Rank=accu_in.Rank
-	 + 1};
-   eltOut =  if _v3 then _v4 else _v9;
-   _v1 = accu_in.Rank;
-   _v2 = accu_in.MinRank;
-   _v3 = _v1 = _v2;
-   _v4 = accu_in.CurrentVal;
+	 _intArray::Exchange_accu{MinVal=_v1;MinRank=_v2;RankFrom=_v3;CurrentVal=_v4;Rank=_v6};
    _v5 = accu_in.Rank;
-   _v6 = accu_in.RankFrom;
-   _v7 = _v5 = _v6;
-   _v8 = accu_in.MinVal;
-   _v9 =  if _v7 then _v8 else eltIn;
+   _v6 = _v5 + 1;
+   _v4 = accu_in.CurrentVal;
+   _v3 = accu_in.RankFrom;
+   _v2 = accu_in.MinRank;
+   _v1 = accu_in.MinVal;
+   eltOut =  if _v9 then _v10 else _v15;
+   _v7 = accu_in.Rank;
+   _v8 = accu_in.MinRank;
+   _v9 = _v7 = _v8;
+   _v10 = accu_in.CurrentVal;
+   _v11 = accu_in.Rank;
+   _v12 = accu_in.RankFrom;
+   _v13 = _v11 = _v12;
+   _v14 = accu_in.MinVal;
+   _v15 =  if _v13 then _v14 else eltIn;
 tel
 -- end of node intArray::Exchange_i_j
 
@@ -18231,24 +18720,39 @@ var
    accu_out_min:_intArray::MinFR_accu;
    accu_out_exchange:_intArray::Exchange_accu;
    localTab:A_int_10;
-   _v1:A_int_10;
-   _v2:A_int_10;
+   _v2:int;
+   _v1:int;
    _v3:A_int_10;
+   _v4:int;
+   _v5:A_int_10;
+   _v9:int;
+   _v8:int;
+   _v7:int;
+   _v6:int;
+   _v10:A_int_10;
+   _v11:int;
+   _v12:int;
 let
     accu_out_min = red<<intArray::minFromRank,
-	10>>(_intArray::MinFR_accu{MinVal=0;MinRank=accu_in.CurrentRank;RankFrom=accu_in.CurrentRank;Rank=0},
-	 _v1);
-   _v1 = accu_in.Tab;
+	 10>>(_intArray::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0}, _v3);
+   _v2 = accu_in.CurrentRank;
+   _v1 = accu_in.CurrentRank;
+   _v3 = accu_in.Tab;
     accu_out_select = red<<intArray::select,
-	10>>(_intArray::Select_accu{RankToFind=accu_in.CurrentRank;CurrentRank=0;Val=0},
-	 _v2);
-   _v2 = accu_in.Tab;
+	 10>>(_intArray::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0}, _v5);
+   _v4 = accu_in.CurrentRank;
+   _v5 = accu_in.Tab;
     (accu_out_exchange, localTab) = fillred<<intArray::Exchange_i_j,
-	10>>(_intArray::Exchange_accu{MinVal=accu_out_min.MinVal;MinRank=accu_out_min.MinRank;RankFrom=accu_out_select.RankToFind;CurrentVal=accu_out_select.Val;Rank=0},
-	 _v3);
-   _v3 = accu_in.Tab;
-    accu_out = _intArray::Sort_accu{CurrentRank=accu_in.CurrentRank +
-	 1;Tab=localTab};
+	10>>(_intArray::Exchange_accu{MinVal=_v6;MinRank=_v7;RankFrom=_v8;CurrentVal=_v9;Rank=0},
+	 _v10);
+   _v9 = accu_out_select.Val;
+   _v8 = accu_out_select.RankToFind;
+   _v7 = accu_out_min.MinRank;
+   _v6 = accu_out_min.MinVal;
+   _v10 = accu_in.Tab;
+   accu_out = _intArray::Sort_accu{CurrentRank=_v12;Tab=localTab};
+   _v11 = accu_in.CurrentRank;
+   _v12 = _v11 + 1;
 tel
 -- end of node intArray::UnarySort
 node intArray::sort_(array:A_int_10) returns (arraySorted:A_int_10);
@@ -18287,10 +18791,26 @@ node intArray::selectOneStage(
 	currentElt:int) 
 returns (
 	acc_out:_intArray::iteratedStruct);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:int;
+   _v3:int;
+   _v1:int;
+   _v2:int;
 let
-    acc_out = _intArray::iteratedStruct{currentRank=acc_in.currentRank +
-	1;rankToSelect=acc_in.rankToSelect;elementSelected= if acc_in.currentRank =
-	 acc_in.rankToSelect then currentElt else acc_in.elementSelected};
+    acc_out =
+	 _intArray::iteratedStruct{currentRank=_v2;rankToSelect=_v3;elementSelected=_v8};
+   _v4 = acc_in.currentRank;
+   _v5 = acc_in.rankToSelect;
+   _v6 = _v4 = _v5;
+   _v7 = acc_in.elementSelected;
+   _v8 =  if _v6 then currentElt else _v7;
+   _v3 = acc_in.rankToSelect;
+   _v1 = acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node intArray::selectOneStage
 
@@ -18301,10 +18821,12 @@ returns (
 	elementSelected:int);
 var
    iterationResult:_intArray::iteratedStruct;
+   _v1:int;
 let
     iterationResult = red<<intArray::selectOneStage,
-	10>>(_intArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=array[0]},
+	10>>(_intArray::iteratedStruct{currentRank=0;rankToSelect=rankToSelect;elementSelected=_v1},
 	 array);
+   _v1 = array[0];
    elementSelected = iterationResult.elementSelected;
 tel
 -- end of node intArray::selectElementOfRank_inArray_
@@ -18335,13 +18857,32 @@ node intArray::selectMaxRank(
 	e1:int) 
 returns (
 	acc_out:_intArray::currentRank_withMemorizedRank);
+var
+   _v8:int;
+   _v9:bool;
+   _v10:int;
+   _v11:int;
+   _v3:int;
+   _v4:bool;
+   _v5:int;
+   _v6:int;
+   _v7:int;
+   _v1:int;
+   _v2:int;
 let
     acc_out =
-	_intArray::currentRank_withMemorizedRank{currentRank=acc_in.currentRank +
-	1;rankOfMemorizedVal= if intArray::_isGreaterThan_(e1, acc_in.memorizedVal)
-	then acc_in.currentRank else acc_in.rankOfMemorizedVal;memorizedVal= if
-	intArray::_isGreaterThan_(e1, acc_in.memorizedVal) then e1 else
-	 acc_in.memorizedVal};
+	 _intArray::currentRank_withMemorizedRank{currentRank=_v2;rankOfMemorizedVal=_v7;memorizedVal=_v11};
+   _v8 = acc_in.memorizedVal;
+   _v9 = intArray::_isGreaterThan_(e1, _v8);
+   _v10 = acc_in.memorizedVal;
+   _v11 =  if _v9 then e1 else _v10;
+   _v3 = acc_in.memorizedVal;
+   _v4 = intArray::_isGreaterThan_(e1, _v3);
+   _v5 = acc_in.currentRank;
+   _v6 = acc_in.rankOfMemorizedVal;
+   _v7 =  if _v4 then _v5 else _v6;
+   _v1 = acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node intArray::selectMaxRank
 
@@ -18351,10 +18892,12 @@ returns (
 	rankOfMaximumElement:int);
 var
    local:_intArray::currentRank_withMemorizedRank;
+   _v1:int;
 let
     local = red<<intArray::selectMaxRank,
-	10>>(_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=array[0]},
+	10>>(_intArray::currentRank_withMemorizedRank{currentRank=0;rankOfMemorizedVal=0;memorizedVal=_v1},
 	 array);
+   _v1 = array[0];
    rankOfMaximumElement = local.rankOfMemorizedVal;
 tel
 -- end of node intArray::getRank_ofMaximumIn_
@@ -18364,12 +18907,26 @@ node intArray::selectMinRank(
 	elt:int) 
 returns (
 	acc_out:_intArray::currentRank_withMemorizedRank);
+var
+   _v8:int;
+   _v3:int;
+   _v4:bool;
+   _v5:int;
+   _v6:int;
+   _v7:int;
+   _v1:int;
+   _v2:int;
 let
     acc_out =
-	_intArray::currentRank_withMemorizedRank{currentRank=acc_in.currentRank +
-	1;rankOfMemorizedVal= if intArray::_isEqualTo_(acc_in.memorizedVal, elt)
-	then acc_in.currentRank else
-	 acc_in.rankOfMemorizedVal;memorizedVal=acc_in.memorizedVal};
+	 _intArray::currentRank_withMemorizedRank{currentRank=_v2;rankOfMemorizedVal=_v7;memorizedVal=_v8};
+   _v8 = acc_in.memorizedVal;
+   _v3 = acc_in.memorizedVal;
+   _v4 = intArray::_isEqualTo_(_v3, elt);
+   _v5 = acc_in.currentRank;
+   _v6 = acc_in.rankOfMemorizedVal;
+   _v7 =  if _v4 then _v5 else _v6;
+   _v1 = acc_in.currentRank;
+   _v2 = _v1 + 1;
 tel
 -- end of node intArray::selectMinRank
 
@@ -18444,13 +19001,62 @@ node tri::minFromRank(
 	TabEltIn:int) 
 returns (
 	accu_out:_tri::MinFR_accu);
+var
+   _v25:int;
+   _v26:int;
+   _v24:int;
+   _v14:int;
+   _v15:int;
+   _v16:bool;
+   _v17:int;
+   _v18:bool;
+   _v19:int;
+   _v20:int;
+   _v21:int;
+   _v22:int;
+   _v23:int;
+   _v1:int;
+   _v2:int;
+   _v3:bool;
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:bool;
+   _v9:int;
+   _v10:int;
+   _v11:int;
+   _v12:int;
+   _v13:int;
 let
-    accu_out = _tri::MinFR_accu{MinVal= if accu_in.Rank <= accu_in.RankFrom
-	then TabEltIn else  if accu_in.Rank >= accu_in.RankFrom then  if TabEltIn <
-	accu_in.MinVal then TabEltIn else accu_in.MinVal else
-	accu_in.MinVal;MinRank= if accu_in.Rank > accu_in.RankFrom then  if
-	TabEltIn < accu_in.MinVal then accu_in.Rank else accu_in.MinRank else
-	 accu_in.MinRank;RankFrom=accu_in.RankFrom;Rank=accu_in.Rank + 1};
+    accu_out =
+	 _tri::MinFR_accu{MinVal=_v13;MinRank=_v23;RankFrom=_v24;Rank=_v26};
+   _v25 = accu_in.Rank;
+   _v26 = _v25 + 1;
+   _v24 = accu_in.RankFrom;
+   _v14 = accu_in.Rank;
+   _v15 = accu_in.RankFrom;
+   _v16 = _v14 > _v15;
+   _v17 = accu_in.MinVal;
+   _v18 = TabEltIn < _v17;
+   _v19 = accu_in.Rank;
+   _v20 = accu_in.MinRank;
+   _v21 =  if _v18 then _v19 else _v20;
+   _v22 = accu_in.MinRank;
+   _v23 =  if _v16 then _v21 else _v22;
+   _v1 = accu_in.Rank;
+   _v2 = accu_in.RankFrom;
+   _v3 = _v1 <= _v2;
+   _v4 = accu_in.Rank;
+   _v5 = accu_in.RankFrom;
+   _v6 = _v4 >= _v5;
+   _v7 = accu_in.MinVal;
+   _v8 = TabEltIn < _v7;
+   _v9 = accu_in.MinVal;
+   _v10 =  if _v8 then TabEltIn else _v9;
+   _v11 = accu_in.MinVal;
+   _v12 =  if _v6 then _v10 else _v11;
+   _v13 =  if _v3 then TabEltIn else _v12;
 tel
 -- end of node tri::minFromRank
 
@@ -18459,11 +19065,25 @@ node tri::select(
 	elt:int) 
 returns (
 	accu_out:_tri::Select_accu);
+var
+   _v4:int;
+   _v5:int;
+   _v6:bool;
+   _v7:int;
+   _v8:int;
+   _v2:int;
+   _v3:int;
+   _v1:int;
 let
-    accu_out =
-	_tri::Select_accu{RankToFind=accu_in.RankToFind;CurrentRank=accu_in.CurrentRank
-	+ 1;Val= if accu_in.RankToFind = accu_in.CurrentRank then elt else
-	 accu_in.Val};
+   accu_out = _tri::Select_accu{RankToFind=_v1;CurrentRank=_v3;Val=_v8};
+   _v4 = accu_in.RankToFind;
+   _v5 = accu_in.CurrentRank;
+   _v6 = _v4 = _v5;
+   _v7 = accu_in.Val;
+   _v8 =  if _v6 then elt else _v7;
+   _v2 = accu_in.CurrentRank;
+   _v3 = _v2 + 1;
+   _v1 = accu_in.RankToFind;
 tel
 -- end of node tri::select
 
@@ -18474,29 +19094,40 @@ returns (
 	accu_out:_tri::Exchange_accu;
 	eltOut:int);
 var
-   _v1:int;
-   _v2:int;
-   _v3:bool;
-   _v4:int;
    _v5:int;
    _v6:int;
-   _v7:bool;
+   _v4:int;
+   _v3:int;
+   _v2:int;
+   _v1:int;
+   _v7:int;
    _v8:int;
-   _v9:int;
+   _v9:bool;
+   _v10:int;
+   _v11:int;
+   _v12:int;
+   _v13:bool;
+   _v14:int;
+   _v15:int;
 let
     accu_out =
-	_tri::Exchange_accu{MinVal=accu_in.MinVal;MinRank=accu_in.MinRank;RankFrom=accu_in.RankFrom;CurrentVal=accu_in.CurrentVal;Rank=accu_in.Rank
-	 + 1};
-   eltOut =  if _v3 then _v4 else _v9;
-   _v1 = accu_in.Rank;
-   _v2 = accu_in.MinRank;
-   _v3 = _v1 = _v2;
-   _v4 = accu_in.CurrentVal;
+	 _tri::Exchange_accu{MinVal=_v1;MinRank=_v2;RankFrom=_v3;CurrentVal=_v4;Rank=_v6};
    _v5 = accu_in.Rank;
-   _v6 = accu_in.RankFrom;
-   _v7 = _v5 = _v6;
-   _v8 = accu_in.MinVal;
-   _v9 =  if _v7 then _v8 else eltIn;
+   _v6 = _v5 + 1;
+   _v4 = accu_in.CurrentVal;
+   _v3 = accu_in.RankFrom;
+   _v2 = accu_in.MinRank;
+   _v1 = accu_in.MinVal;
+   eltOut =  if _v9 then _v10 else _v15;
+   _v7 = accu_in.Rank;
+   _v8 = accu_in.MinRank;
+   _v9 = _v7 = _v8;
+   _v10 = accu_in.CurrentVal;
+   _v11 = accu_in.Rank;
+   _v12 = accu_in.RankFrom;
+   _v13 = _v11 = _v12;
+   _v14 = accu_in.MinVal;
+   _v15 =  if _v13 then _v14 else eltIn;
 tel
 -- end of node tri::Exchange_i_j
 
@@ -18510,35 +19141,51 @@ var
    accu_out_min:_tri::MinFR_accu;
    accu_out_exchange:_tri::Exchange_accu;
    localTab:A_int_10;
-   _v1:A_int_10;
-   _v2:A_int_10;
+   _v2:int;
+   _v1:int;
    _v3:A_int_10;
+   _v4:int;
+   _v5:A_int_10;
+   _v9:int;
+   _v8:int;
+   _v7:int;
+   _v6:int;
+   _v10:A_int_10;
+   _v11:int;
+   _v12:int;
 let
     accu_out_min = red<<tri::minFromRank,
-	10>>(_tri::MinFR_accu{MinVal=0;MinRank=accu_in.CurrentRank;RankFrom=accu_in.CurrentRank;Rank=0},
-	 _v1);
-   _v1 = accu_in.Tab;
+	 10>>(_tri::MinFR_accu{MinVal=0;MinRank=_v1;RankFrom=_v2;Rank=0}, _v3);
+   _v2 = accu_in.CurrentRank;
+   _v1 = accu_in.CurrentRank;
+   _v3 = accu_in.Tab;
     accu_out_select = red<<tri::select,
-	10>>(_tri::Select_accu{RankToFind=accu_in.CurrentRank;CurrentRank=0;Val=0},
-	 _v2);
-   _v2 = accu_in.Tab;
+	 10>>(_tri::Select_accu{RankToFind=_v4;CurrentRank=0;Val=0}, _v5);
+   _v4 = accu_in.CurrentRank;
+   _v5 = accu_in.Tab;
     (accu_out_exchange, localTab) = fillred<<tri::Exchange_i_j,
-	10>>(_tri::Exchange_accu{MinVal=accu_out_min.MinVal;MinRank=accu_out_min.MinRank;RankFrom=accu_out_select.RankToFind;CurrentVal=accu_out_select.Val;Rank=0},
-	 _v3);
-   _v3 = accu_in.Tab;
-    accu_out = _tri::Sort_accu{CurrentRank=accu_in.CurrentRank +
-	 1;Tab=localTab};
+	10>>(_tri::Exchange_accu{MinVal=_v6;MinRank=_v7;RankFrom=_v8;CurrentVal=_v9;Rank=0},
+	 _v10);
+   _v9 = accu_out_select.Val;
+   _v8 = accu_out_select.RankToFind;
+   _v7 = accu_out_min.MinRank;
+   _v6 = accu_out_min.MinVal;
+   _v10 = accu_in.Tab;
+   accu_out = _tri::Sort_accu{CurrentRank=_v12;Tab=localTab};
+   _v11 = accu_in.CurrentRank;
+   _v12 = _v11 + 1;
 tel
 -- end of node tri::UnarySort
 node tri::main(TIn:A_int_10) returns (TSorted:A_int_10);
 var
    UnarySort_accu_out:_tri::Sort_accu;
    _v1:A_int_10;
+   _v2:A_int_10;
 let
     UnarySort_accu_out = red<<tri::UnarySort,
-	10>>(_tri::Sort_accu{CurrentRank=0;Tab=[7, 8, 4, 3, 2, 9, 1, 10, 2, 7]},
-	 _v1);
+	 10>>(_tri::Sort_accu{CurrentRank=0;Tab=_v1}, _v2);
    _v1 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7];
+   _v2 = [7, 8, 4, 3, 2, 9, 1, 10, 2, 7];
    TSorted = UnarySort_accu_out.Tab;
 tel
 -- end of node tri::main
@@ -18548,9 +19195,17 @@ node tri::sorted_iter(
 	elt:int) 
 returns (
 	accu_out:_tri::sorted_iter_accu);
+var
+   _v1:int;
+   _v2:bool;
+   _v3:bool;
+   _v4:bool;
 let
-    accu_out = _tri::sorted_iter_accu{prev_elt=elt;prop_is_tt=accu_in.prev_elt
-	 <= elt and accu_in.prop_is_tt};
+   accu_out = _tri::sorted_iter_accu{prev_elt=elt;prop_is_tt=_v4};
+   _v1 = accu_in.prev_elt;
+   _v2 = _v1 <= elt;
+   _v3 = accu_in.prop_is_tt;
+   _v4 = _v2 and _v3;
 tel
 -- end of node tri::sorted_iter
 node tri::Sorted(TIn:A_int_10) returns (res:bool);