diff --git a/src/Makefile b/src/Makefile
index c838f97816b8c6f249a22684c20c6ff55eb22a35..a3b6a4789b1463c6cc106e9a92c752ec34fe2e45 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -46,7 +46,7 @@ include $(OCAMLMAKEFILE)
 MLONLY_SOURCES := $(filter %.ml, $(SOURCES))
 
 tags: $(MLONLY_SOURCES)
-	otags  $(MLONLY_SOURCES)  $(shell ocamlc -where)/*.mli
+	otags  $(SOURCES)  $(shell ocamlc -where)/*.mli
 
 test: $(RESULT)
 	cd test; make test
diff --git a/src/TAGS b/src/TAGS
index b69d3698b3af9c887878d79fa73c8bc1e972ac2a..42e8e99f59a14adc2971ffff00a2d9db48756cf4 100644
--- a/src/TAGS
+++ b/src/TAGS
@@ -121,6 +121,14 @@ let warningwarning123,4420
 let print_global_errorprint_global_error130,4701
 let print_internal_errorprint_internal_error138,4984
 
+./evalConst.mli,236
+EvalConst1,0
+exception EvalArray_errorEvalArray_error63,1475
+val eval_consteval_const65,1512
+val eval_array_sizeeval_array_size79,1859
+val eval_array_indexeval_array_index93,2109
+val eval_array_sliceeval_array_slice110,2556
+
 ./evalConst.ml,582
 EvalConst1,0
 exception EvalArray_errorEvalArray_error14,319
@@ -137,15 +145,49 @@ and eval_array_sizeeval_array_size747,22831
 and eval_array_indexeval_array_index780,23764
 and eval_array_sliceeval_array_slice818,24958
 
+./evalType.mli,30
+EvalType1,0
+val ff48,1234
+
 ./evalType.ml,79
 EvalType1,0
 exception EvalType_errorEvalType_error9,145
 let rec ff24,501
 
+./expandPack.mli,38
+ExpandPack1,0
+val doitdoit46,1653
+
 ./expandPack.ml,37
 ExpandPack1,0
 let (doitdoit8,131
 
+./ident.mli,825
+Ident1,0
+tt4,74
+type pack_namepack_name6,82
+type longlong8,98
+val to_stringto_string11,110
+val of_stringof_string12,138
+val of_longof_long14,167
+val pack_name_of_stringpack_name_of_string15,191
+val to_pack_nameto_pack_name16,237
+val pack_name_to_stringpack_name_to_string17,271
+val pack_of_longpack_of_long18,317
+val string_of_longstring_of_long20,355
+val long_to_stringlong_to_string21,391
+val long_of_stringlong_of_string22,427
+val make_longmake_long24,464
+val set_dft_pack_nameset_dft_pack_name27,505
+type idrefidref44,1000
+      id_packid_pack46,1020
+      id_idid_id47,1051
+val idref_of_stringidref_of_string50,1080
+val string_of_idrefstring_of_idref53,1120
+val name_of_idrefname_of_idref55,1159
+val pack_of_idrefpack_of_idref56,1190
+val long_of_idreflong_of_idref60,1334
+
 ./ident.ml,898
 Ident1,0
 tt44,790
@@ -163,40 +205,74 @@ let (make_longmake_long71,1285
 let dft_pack_namedft_pack_name74,1352
 let (set_dft_pack_nameset_dft_pack_name76,1426
 let (to_pack_nameto_pack_name80,1510
-type idrefidref90,1593
-      id_packid_pack92,1613
-      id_idid_id93,1647
-let (pack_of_idrefpack_of_idref96,1671
-let (name_of_idrefname_of_idref99,1745
-let idref_of_stringidref_of_string104,1827
-let (long_of_stringlong_of_string111,2066
-let string_of_idrefstring_of_idref118,2293
-let (long_of_idreflong_of_idref124,2398
-
-./lazyCompiler.ml,794
+type idrefidref90,1595
+      id_packid_pack92,1615
+      id_idid_id93,1649
+let (pack_of_idrefpack_of_idref96,1673
+let (name_of_idrefname_of_idref99,1747
+let idref_of_stringidref_of_string104,1829
+let (long_of_stringlong_of_string111,2068
+let string_of_idrefstring_of_idref118,2295
+let (long_of_idreflong_of_idref124,2400
+
+./lazyCompiler.mli,114
 LazyCompiler1,0
-exception Recursion_errorRecursion_error19,337
-exception BadCheckRef_errorBadCheckRef_error22,440
-let recursion_errorrecursion_error26,492
-tt39,884
-  src_tabsrc_tab40,895
-  typestypes42,943
-  constsconsts43,1011
-  nodesnodes44,1079
-  prov_typesprov_types46,1170
-  prov_constsprov_consts47,1243
-  prov_nodesprov_nodes48,1316
-let (createcreate54,1488
-let rec do_typedo_type86,2344
-    do_prov_typedo_prov_type114,3299
-      and check_type_defcheck_type_def175,5214
-    do_constdo_const260,7916
-    do_prov_constdo_prov_const290,8942
-    check_const_defcheck_const_def348,10763
-    solve_type_idrefsolve_type_idref408,12695
-    solve_const_idrefsolve_const_idref437,13583
-let (do_nodedo_node470,14626
-let test_typestest_types492,15137
+tt11,407
+val createcreate14,445
+val do_nodedo_node18,502
+val test_typestest_types22,631
+
+./lazyCompiler.ml,1173
+LazyCompiler1,0
+exception Recursion_errorRecursion_error14,316
+exception BadCheckRef_errorBadCheckRef_error16,392
+let recursion_errorrecursion_error18,421
+tt31,813
+  src_tabsrc_tab32,824
+  typestypes34,872
+  constsconsts35,940
+  nodesnodes36,1008
+  prov_typesprov_types38,1099
+  prov_constsprov_consts39,1172
+  prov_nodesprov_nodes40,1245
+let (createcreate46,1417
+let x_checkx_check105,3546
+let x_check_interfacex_check_interface119,4157
+let lookup_x_efflookup_x_eff143,5106
+let (lookup_type_efflookup_type_eff149,5372
+let (lookup_const_efflookup_const_eff153,5536
+let rec (type_checktype_check161,5819
+and (const_checkconst_check166,6032
+and (type_check_interfacetype_check_interface171,6256
+and (const_check_interfaceconst_check_interface178,6530
+and (type_check_interface_dotype_check_interface_do185,6786
+and (const_check_interface_doconst_check_interface_do228,8273
+and (type_check_dotype_check_do258,9414
+and (const_check_doconst_check_do329,11699
+and (solve_type_idrefsolve_type_idref386,13572
+and (solve_const_idrefsolve_const_idref409,14386
+let (do_nodedo_node434,15320
+let test_typestest_types456,15831
+
+./lxm.mli,441
+Lxm1,0
+tt7,84
+val strstr10,93
+val idid11,115
+val pack_namepack_name12,137
+val lineline13,174
+val cstartcstart14,195
+val cendcend15,217
+val makemake24,438
+val new_linenew_line28,561
+type 'a srcflagedsrcflaged35,758
+type 'a srcsrc35,758
+type 'a srcflaged = { src : t ; itit35,758
+val flagitflagit36,801
+val dummydummy39,876
+val last_madelast_made43,987
+val detailsdetails48,1107
+val positionposition51,1169
 
 ./lxm.ml,598
 Lxm1,0
@@ -227,251 +303,317 @@ let last_madelast_made66,1467
 
 ./main.ml,582
 Main1,0
-let usage_msgusage_msg52,1080
-type lpp_argslpp_args58,1330
-  mutable infileinfile59,1348
-  mutable main_nodemain_node60,1376
-  mutable runmoderunmode61,1407
-let rec _LPP_ARGS_LPP_ARGS63,1438
-and set_infileset_infile69,1616
-and set_run_modeset_run_mode80,1868
-and print_versionprint_version83,1940
-and arg_listarg_list86,2022
-    parse_argsparse_args110,2813
-let test_lextest_lex118,3007
-let lus_loadlus_load131,3330
-let dump_bodydump_body136,3423
-let dump_nsdump_ns142,3608
-let get_source_listget_source_list160,4105
-let mainmain173,4448
+let usage_msgusage_msg52,1085
+type lpp_argslpp_args58,1335
+  mutable infileinfile59,1353
+  mutable main_nodemain_node60,1381
+  mutable runmoderunmode61,1412
+let rec _LPP_ARGS_LPP_ARGS63,1443
+and set_infileset_infile69,1621
+and set_run_modeset_run_mode80,1873
+and print_versionprint_version83,1945
+and arg_listarg_list86,2027
+    parse_argsparse_args110,2818
+let test_lextest_lex118,3012
+let lus_loadlus_load131,3335
+let dump_bodydump_body136,3428
+let dump_nsdump_ns142,3613
+let get_source_listget_source_list160,4116
+let mainmain173,4459
 
 ./parserUtils.ml,124
 ParserUtils1,0
 let flat_flagged_listflat_flagged_list35,932
 let flat_twice_flagged_listflat_twice_flagged_list73,1926
 
-./symbolTab.ml,659
+./symbolTab.mli,583
 SymbolTab1,0
-type 'a hereflagedhereflaged9,73
-  HereHere10,94
-| NotHereNotHere11,107
-tt13,132
-  st_constsst_consts14,143
-  st_typesst_types15,215
-  st_opersst_opers16,285
-let createcreate20,406
-let find_typefind_type26,527
-let find_constfind_const34,721
-let find_operfind_oper42,916
-let add_import_constadd_import_const51,1138
-let add_import_typeadd_import_type55,1260
-let add_import_operadd_import_oper59,1380
-let add_constadd_const63,1500
-let add_typeadd_type67,1619
-let add_operadd_oper84,2150
-let iter_typesiter_types88,2261
-let iter_constsiter_consts89,2317
-let iter_opersiter_opers90,2375
-let dumpdump92,2432
-
-./syntaxTab.ml,15
+type 'a hereflagedhereflaged16,596
+    HereHere17,617
+  | NotHereNotHere18,662
+tt20,710
+val createcreate22,718
+val find_typefind_type27,794
+val find_constfind_const28,874
+val find_operfind_oper29,956
+val add_import_constadd_import_const32,1083
+val add_import_typeadd_import_type33,1141
+val add_import_operadd_import_oper34,1198
+val add_typeadd_type37,1291
+val add_constadd_const38,1366
+val add_operadd_oper39,1443
+val iter_typesiter_types43,1547
+val iter_constsiter_consts45,1649
+val iter_opersiter_opers47,1753
+val dumpdump50,1856
+
+./symbolTab.ml,662
+SymbolTab1,0
+type 'a hereflagedhereflaged10,145
+  HereHere11,166
+| NotHereNotHere12,179
+tt14,204
+  st_constsst_consts15,215
+  st_typesst_types16,286
+  st_opersst_opers17,357
+let createcreate21,479
+let find_typefind_type27,602
+let find_constfind_const35,796
+let find_operfind_oper43,991
+let add_import_constadd_import_const52,1213
+let add_import_typeadd_import_type56,1335
+let add_import_operadd_import_oper60,1455
+let add_constadd_const64,1575
+let add_typeadd_type68,1694
+let add_operadd_oper85,2225
+let iter_typesiter_types89,2336
+let iter_constsiter_consts90,2392
+let iter_opersiter_opers91,2450
+let dumpdump93,2507
+
+./syntaxTab.mli,181
+SyntaxTab1,0
+tt14,449
+val createcreate16,457
+val pack_body_envpack_body_env20,529
+val pack_prov_envpack_prov_env23,629
+val pack_listpack_list26,723
+val dumpdump29,768
+
+./syntaxTab.ml,871
 SyntaxTab1,0
+type pack_mngpack_mng49,1439
+  pm_lxmpm_lxm51,1495
+  pm_raw_srcpm_raw_src53,1536
+  pm_actual_srcpm_actual_src55,1599
+  pm_user_itemspm_user_items58,1713
+  pm_body_stabpm_body_stab60,1846
+  pm_provide_stabpm_provide_stab62,1936
+tt77,2413
+  st_listst_list79,2465
+  st_raw_mod_tabst_raw_mod_tab80,2509
+  st_raw_pack_tabst_raw_pack_tab81,2574
+  st_pack_mng_tabst_pack_mng_tab83,2682
+let (pack_listpack_list87,2762
+let (pack_body_envpack_body_env93,2899
+let (pack_prov_envpack_prov_env100,3087
+let init_user_itemsinit_user_items110,3479
+let create_pack_mngcreate_pack_mng191,5879
+let rec (createcreate228,7013
+init_raw_tabsinit_raw_tabs260,8055
+init_pack_mng_stabsinit_pack_mng_stabs296,9204
+let find_typefind_type376,11669
+let find_constfind_const380,11782
+let find_operfind_oper384,11896
+let (dumpdump391,12025
+
+./syntaxTabUtils.mli,53
+SyntaxTabUtils1,0
+val put_in_tabput_in_tab16,524
 
 ./syntaxTabUtils.ml,51
 SyntaxTabUtils1,0
 let put_in_tabput_in_tab7,85
 
-./syntaxTree.ml,6133
+./syntaxTree.ml,6196
 SyntaxTree1,0
-type 'a errorerror18,456
-    OkOk19,474
-  | ErrorError20,487
-tt26,641
-    PRPackBodyPRPackBody27,651
-  | PRPack_or_modelsPRPack_or_models28,678
-  pack_or_modelpack_or_model30,725
-    NSPackNSPack31,743
-  | NSModelNSModel32,780
-  model_infomodel_info34,822
-    mo_namemo_name35,839
-    mo_usesmo_uses36,872
-    mo_needsmo_needs37,920
-    mo_providesmo_provides39,1009
-    mo_bodymo_body40,1060
-and pack_infopack_info42,1089
-    pa_namepa_name43,1107
-    pa_defpa_def44,1139
-  pack_defpack_def47,1171
-    PackGivenPackGiven48,1185
-  | PackInstancePackInstance49,1213
-  pack_givenpack_given51,1251
-    pg_usespg_uses52,1269
-    pg_providespg_provides54,1361
-    pg_bodypg_body55,1412
-  pack_instancepack_instance58,1445
-    pi_modelpi_model59,1465
-    pi_argspi_args60,1490
-  packbodypackbody68,1715
-    pk_const_tablepk_const_table69,1730
-    pk_type_tablepk_type_table70,1796
-    pk_oper_tablepk_oper_table71,1862
-    pk_def_listpk_def_list72,1928
-  item_identitem_ident75,1976
-    ConstItemConstItem79,2083
-  | TypeItemTypeItem80,2108
-  | OperItemOperItem81,2133
-  item_infoitem_info83,2162
-    ConstInfoConstInfo84,2176
-  | TypeInfoTypeInfo85,2204
-  | OperInfoOperInfo86,2231
-  const_infoconst_info91,2428
-    ExternalConstExternalConst92,2444
-  | EnumConstEnumConst93,2487
-  | DefinedConstDefinedConst94,2530
-  type_infotype_info99,2755
-    ExternalTypeExternalType100,2769
-  | AliasedTypeAliasedType101,2799
-  | EnumTypeEnumType102,2840
-  | StructTypeStructType104,2955
-  struct_type_infostruct_type_info114,3444
-    st_namest_name115,3467
-    st_flistst_flist116,3491
-    st_ftablest_ftable117,3521
-and field_infofield_info119,3586
-  fd_namefd_name120,3605
-  fd_typefd_type121,3628
-  fd_valuefd_value122,3652
-  type_exptype_exp130,4014
-  type_exp_coretype_exp_core132,4055
-    Bool_type_expBool_type_exp133,4073
-  | Int_type_expInt_type_exp134,4091
-  | Real_type_expReal_type_exp135,4108
-  | Named_type_expNamed_type_exp136,4126
-  | Array_type_expArray_type_exp137,4162
-  oper_infooper_info143,4428
-    NodeNode144,4442
-  | FuncFunc145,4465
-  func_infofunc_info150,4655
-    fn_namefn_name151,4671
-    fn_inparsfn_inpars152,4698
-    fn_outparsfn_outpars153,4750
-  node_infonode_info160,5014
-    ni_nameni_name161,5030
-    ni_staticlistni_staticlist162,5060
-    ni_valueni_value163,5110
-and node_profilenode_profile165,5138
-and node_defnode_def166,5209
-    NodeExternNodeExtern167,5224
-  | NodeBodyNodeBody168,5255
-  | NodeAliasNodeAlias169,5282
-and node_bodynode_body176,5652
-  nbdy_inlistnbdy_inlist177,5670
-  nbdy_outlistnbdy_outlist178,5704
-  nbdy_loclistnbdy_loclist179,5738
-  nbdy_vartablenbdy_vartable180,5772
-  nbdy_assertsnbdy_asserts181,5808
-  nbdy_eqsnbdy_eqs182,5854
-and var_info_tablevar_info_table184,5900
-and static_paramstatic_param185,5962
-    StaticParamTypeStaticParamType186,5981
-  | StaticParamConstStaticParamConst187,6013
-  | StaticParamNodeStaticParamNode188,6058
-and var_infovar_info189,6144
-  va_natureva_nature190,6161
-  va_nameva_name191,6187
-  va_typeva_type192,6210
-  va_clockva_clock193,6234
-and var_naturevar_nature195,6261
-    VarInputVarInput196,6278
-  | VarOutputVarOutput197,6291
-  | VarLocalVarLocal198,6305
-and eq_infoeq_info199,6318
-  eq_lefteq_left200,6334
-  eq_righteq_right201,6363
-and clock_expclock_exp204,6445
-    BaseClockBaseClock205,6461
-  | NamedClockNamedClock206,6475
-and left_partleft_part207,6511
-    LeftVarLeftVar209,6582
-  | LeftFieldLeftField210,6617
-  | LeftArrayLeftArray211,6668
-  | LeftSliceLeftSlice212,6721
-and slice_infoslice_info213,6775
-  si_firstsi_first214,6794
-  si_lastsi_last215,6817
-  si_stepsi_step216,6840
-and val_expval_exp229,7384
-    CallByPosCallByPos230,7398
-  | CallByNameCallByName231,7456
-and by_pos_opby_pos_op234,7581
-    NULL_expNULL_exp236,7616
-  | TRUE_nTRUE_n237,7629
-  | FALSE_nFALSE_n238,7640
-  | ICONST_nICONST_n239,7652
-  | RCONST_nRCONST_n240,7676
-  | IDENT_nIDENT_n241,7700
-  | NOT_nNOT_n243,7745
-  | UMINUS_nUMINUS_n244,7755
-  | PRE_nPRE_n245,7768
-  | CURRENT_nCURRENT_n246,7778
-  | REAL2INT_nREAL2INT_n247,7792
-  | INT2REAL_nINT2REAL_n248,7807
-  | ARROW_nARROW_n250,7843
-  | FBY_nFBY_n251,7855
-  | WHEN_nWHEN_n252,7865
-  | AND_nAND_n253,7876
-  | OR_nOR_n254,7886
-  | XOR_nXOR_n255,7895
-  | IMPL_nIMPL_n256,7905
-  | EQ_nEQ_n257,7916
-  | NEQ_nNEQ_n258,7925
-  | LT_nLT_n259,7935
-  | LTE_nLTE_n260,7944
-  | GT_nGT_n261,7954
-  | GTE_nGTE_n262,7963
-  | DIV_nDIV_n263,7973
-  | MOD_nMOD_n264,7983
-  | MINUS_nMINUS_n265,7993
-  | PLUS_nPLUS_n266,8005
-  | SLASH_nSLASH_n267,8016
-  | TIMES_nTIMES_n268,8028
-  | POWER_nPOWER_n269,8040
-  | HAT_nHAT_n270,8052
-  | CONCAT_nCONCAT_n271,8062
-  | IF_nIF_n273,8097
-  | WITH_nWITH_n274,8106
-  | NOR_nNOR_n276,8137
-  | DIESE_nDIESE_n277,8147
-  | TUPLE_nTUPLE_n278,8159
-  | ARRAY_nARRAY_n279,8171
-  | PROJ_nPROJ_n285,8442
-  | CALL_nCALL_n287,8507
-  | ARRAY_ACCES_nARRAY_ACCES_n289,8582
-  | ARRAY_SLICE_nARRAY_SLICE_n290,8611
-  | STRUCT_ACCESS_nSTRUCT_ACCESS_n292,8687
-and by_name_opby_name_op298,8840
-    BYNAME_CALL_nBYNAME_CALL_n299,8857
-  | STRUCT_EXP_nSTRUCT_EXP_n301,8922
-and oper_expoper_exp303,8980
-    CallPreDefCallPreDef304,8995
-  | CallUsrDefCallUsrDef305,9023
-and static_argstatic_arg313,9289
-    StaticArgIdentStaticArgIdent314,9306
-  | StaticArgConstStaticArgConst315,9340
-  | StaticArgTypeStaticArgType316,9370
-  | StaticArgNodeStaticArgNode317,9401
-let give_pack_this_namegive_pack_this_name324,9571
-let leafexpleafexp339,9880
-let unexpunexp343,9952
-let binexpbinexp347,10027
-let ternexpternexp351,10111
-let naryexpnaryexp355,10203
-let bynameexpbynameexp359,10282
-let make_packbodymake_packbody374,10801
-let add_infoadd_info393,11369
-let lexeme_of_val_explexeme_of_val_exp425,12305
-let rec lexeme_of_left_partlexeme_of_left_part429,12435
-let lexeme_of_pack_or_modellexeme_of_pack_or_model436,12647
+type 'a errorerror18,460
+    OkOk19,478
+  | ErrorError20,491
+tt26,645
+    PRPackBodyPRPackBody27,655
+  | PRPack_or_modelsPRPack_or_models28,682
+  pack_or_modelpack_or_model30,729
+    NSPackNSPack31,747
+  | NSModelNSModel32,784
+  model_infomodel_info34,826
+    mo_namemo_name35,843
+    mo_usesmo_uses36,876
+    mo_needsmo_needs37,924
+    mo_providesmo_provides39,1013
+    mo_bodymo_body40,1064
+and pack_infopack_info42,1093
+    pa_namepa_name43,1111
+    pa_defpa_def44,1143
+  pack_defpack_def47,1175
+    PackGivenPackGiven48,1189
+  | PackInstancePackInstance49,1217
+  pack_givenpack_given51,1255
+    pg_usespg_uses52,1273
+    pg_providespg_provides54,1365
+    pg_bodypg_body55,1416
+  pack_instancepack_instance58,1449
+    pi_modelpi_model59,1469
+    pi_argspi_args60,1494
+  packbodypackbody68,1719
+    pk_const_tablepk_const_table69,1734
+    pk_type_tablepk_type_table70,1800
+    pk_oper_tablepk_oper_table71,1866
+    pk_def_listpk_def_list72,1932
+  item_identitem_ident75,1980
+    ConstItemConstItem79,2087
+  | TypeItemTypeItem80,2112
+  | OperItemOperItem81,2137
+  item_infoitem_info83,2166
+    ConstInfoConstInfo84,2180
+  | TypeInfoTypeInfo85,2208
+  | OperInfoOperInfo86,2235
+  const_infoconst_info91,2432
+    ExternalConstExternalConst92,2448
+  | EnumConstEnumConst93,2491
+  | DefinedConstDefinedConst94,2534
+  type_infotype_info99,2759
+    ExternalTypeExternalType100,2773
+  | AliasedTypeAliasedType101,2803
+  | EnumTypeEnumType102,2844
+  | StructTypeStructType104,2959
+  struct_type_infostruct_type_info114,3448
+    st_namest_name115,3471
+    st_flistst_flist116,3495
+    st_ftablest_ftable117,3525
+and field_infofield_info119,3590
+  fd_namefd_name120,3609
+  fd_typefd_type121,3632
+  fd_valuefd_value122,3656
+  type_exptype_exp130,4018
+  type_exp_coretype_exp_core132,4059
+    Bool_type_expBool_type_exp133,4077
+  | Int_type_expInt_type_exp134,4095
+  | Real_type_expReal_type_exp135,4112
+  | Named_type_expNamed_type_exp136,4130
+  | Array_type_expArray_type_exp137,4166
+  oper_infooper_info143,4432
+    NodeNode144,4446
+  | FuncFunc145,4469
+  func_infofunc_info150,4659
+    fn_namefn_name151,4675
+    fn_inparsfn_inpars152,4702
+    fn_outparsfn_outpars153,4754
+  node_infonode_info160,5018
+    ni_nameni_name161,5034
+    ni_staticlistni_staticlist162,5064
+    ni_valueni_value163,5114
+and node_profilenode_profile165,5142
+and node_defnode_def166,5213
+    NodeExternNodeExtern167,5228
+  | NodeBodyNodeBody168,5259
+  | NodeAliasNodeAlias169,5286
+and node_bodynode_body176,5656
+  nbdy_inlistnbdy_inlist177,5674
+  nbdy_outlistnbdy_outlist178,5708
+  nbdy_loclistnbdy_loclist179,5742
+  nbdy_vartablenbdy_vartable180,5776
+  nbdy_assertsnbdy_asserts181,5812
+  nbdy_eqsnbdy_eqs182,5858
+and var_info_tablevar_info_table184,5904
+and static_paramstatic_param185,5966
+    StaticParamTypeStaticParamType186,5985
+  | StaticParamConstStaticParamConst187,6017
+  | StaticParamNodeStaticParamNode188,6062
+and var_infovar_info189,6148
+  va_natureva_nature190,6165
+  va_nameva_name191,6191
+  va_typeva_type192,6214
+  va_clockva_clock193,6238
+and var_naturevar_nature195,6265
+    VarInputVarInput196,6282
+  | VarOutputVarOutput197,6295
+  | VarLocalVarLocal198,6309
+and eq_infoeq_info199,6322
+  eq_lefteq_left200,6338
+  eq_righteq_right201,6367
+and clock_expclock_exp204,6449
+    BaseClockBaseClock205,6465
+  | NamedClockNamedClock206,6479
+and left_partleft_part207,6515
+    LeftVarLeftVar209,6586
+  | LeftFieldLeftField210,6621
+  | LeftArrayLeftArray211,6672
+  | LeftSliceLeftSlice212,6725
+and slice_infoslice_info213,6779
+  si_firstsi_first214,6798
+  si_lastsi_last215,6821
+  si_stepsi_step216,6844
+and val_expval_exp229,7388
+    CallByPosCallByPos230,7402
+  | CallByNameCallByName231,7460
+and by_pos_opby_pos_op234,7585
+    NULL_expNULL_exp236,7620
+  | TRUE_nTRUE_n237,7633
+  | FALSE_nFALSE_n238,7644
+  | ICONST_nICONST_n239,7656
+  | RCONST_nRCONST_n240,7680
+  | IDENT_nIDENT_n241,7704
+  | NOT_nNOT_n243,7749
+  | UMINUS_nUMINUS_n244,7759
+  | PRE_nPRE_n245,7772
+  | CURRENT_nCURRENT_n246,7782
+  | REAL2INT_nREAL2INT_n247,7796
+  | INT2REAL_nINT2REAL_n248,7811
+  | ARROW_nARROW_n250,7847
+  | FBY_nFBY_n251,7859
+  | WHEN_nWHEN_n252,7869
+  | AND_nAND_n253,7880
+  | OR_nOR_n254,7890
+  | XOR_nXOR_n255,7899
+  | IMPL_nIMPL_n256,7909
+  | EQ_nEQ_n257,7920
+  | NEQ_nNEQ_n258,7929
+  | LT_nLT_n259,7939
+  | LTE_nLTE_n260,7948
+  | GT_nGT_n261,7958
+  | GTE_nGTE_n262,7967
+  | DIV_nDIV_n263,7977
+  | MOD_nMOD_n264,7987
+  | MINUS_nMINUS_n265,7997
+  | PLUS_nPLUS_n266,8009
+  | SLASH_nSLASH_n267,8020
+  | TIMES_nTIMES_n268,8032
+  | POWER_nPOWER_n269,8044
+  | HAT_nHAT_n270,8056
+  | CONCAT_nCONCAT_n271,8066
+  | IF_nIF_n273,8101
+  | WITH_nWITH_n274,8110
+  | NOR_nNOR_n276,8141
+  | DIESE_nDIESE_n277,8151
+  | TUPLE_nTUPLE_n278,8163
+  | ARRAY_nARRAY_n279,8175
+  | PROJ_nPROJ_n285,8446
+  | CALL_nCALL_n287,8511
+  | ARRAY_ACCES_nARRAY_ACCES_n289,8586
+  | ARRAY_SLICE_nARRAY_SLICE_n290,8615
+  | STRUCT_ACCESS_nSTRUCT_ACCESS_n292,8691
+and by_name_opby_name_op298,8844
+    BYNAME_CALL_nBYNAME_CALL_n299,8861
+  | STRUCT_EXP_nSTRUCT_EXP_n301,8926
+and oper_expoper_exp303,8984
+    CallPreDefCallPreDef304,8999
+  | CallUsrDefCallUsrDef305,9027
+and static_argstatic_arg313,9293
+    StaticArgIdentStaticArgIdent314,9310
+  | StaticArgConstStaticArgConst315,9344
+  | StaticArgTypeStaticArgType316,9374
+  | StaticArgNodeStaticArgNode317,9405
+let give_pack_this_namegive_pack_this_name324,9575
+let leafexpleafexp339,9884
+let unexpunexp343,9956
+let binexpbinexp347,10031
+let ternexpternexp351,10115
+let naryexpnaryexp355,10207
+let bynameexpbynameexp359,10286
+let make_packbodymake_packbody374,10805
+let add_infoadd_info393,11373
+let lexeme_of_val_explexeme_of_val_exp425,12309
+let rec lexeme_of_left_partlexeme_of_left_part429,12439
+let lexeme_of_pack_or_modellexeme_of_pack_or_model436,12651
+let (pack_or_model_to_stringpack_or_model_to_string443,12794
+
+./syntaxTreeDump.mli,137
+SyntaxTreeDump1,0
+val packinfopackinfo6,121
+val packbodypackbody7,199
+val modelinfomodelinfo9,263
+val op2stringop2string10,343
 
 ./syntaxTreeDump.ml,1938
 SyntaxTreeDump1,0
@@ -520,12 +662,20 @@ let dump_packgivendump_packgiven627,20832
 let rec packinfopackinfo641,21241
 let modelinfomodelinfo660,21970
 
-./verbose.ml,120
+./verbose.mli,137
+Verbose1,0
+val set_levelset_level16,413
+val get_levelget_level17,441
+val printfprintf19,470
+val print_stringprint_string20,536
+
+./verbose.ml,164
 Verbose1,0
 let _level_level27,880
 let set_levelset_level29,900
 let get_levelget_level30,940
-let putput33,1003
+let printfprintf33,1003
+let print_stringprint_string36,1112
 
 ./version.ml,118
 Version1,0
diff --git a/src/ident.ml b/src/ident.ml
index c3546da7d99e53700039d1fbc23aadc77ed6cce9..0fffc4ae8bd1db93327453c2f4e607ed02744be4 100644
--- a/src/ident.ml
+++ b/src/ident.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 21/12/2007 (at 14:34) by Erwan Jahier> *)
+(** Time-stamp: <modified the 29/01/2008 (at 09:33) by Erwan Jahier> *)
 
 (* J'ai appele ca symbol (mais ca remplace le ident) :
 c'est juste une couche qui garantit l'unicite en memoire
@@ -85,7 +85,7 @@ let (to_pack_name : t -> pack_name) =
 
 
 
-(*  -> syntaxeTree.ml *)
+(*  -> syntaxeTree.ml ? *)
 
 type idref = 
     {
diff --git a/src/lazyCompiler.ml b/src/lazyCompiler.ml
index 97ec90b2dcf9dffda00066c91fdb1128315713ef..d984ad31ba2ec7630965a6c0d00a92ced42fd7d2 100644
--- a/src/lazyCompiler.ml
+++ b/src/lazyCompiler.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 19/12/2007 (at 10:39) by Erwan Jahier> *)
+(** Time-stamp: <modified the 30/01/2008 (at 11:12) by Erwan Jahier> *)
 
 
 open Lxm
@@ -7,22 +7,14 @@ open SyntaxTree
 open CompiledData
 
 
-
-
 (******************************************************************************)
-(** Returns the ident on which the recursion was detedted, plus an execution
+(** Returns the ident on which the recursion was detected, plus an execution
     stack description. 
-
- XXX cf QUESTION
-
 *)
 exception Recursion_error of (Ident.long as 'id) * (string list as 'stack)
 
-(* vraiment utile ????? *)
 exception BadCheckRef_error
 
-
-(* XXX cf QUESTION *)
 let recursion_error (lxm : Lxm.t) (stack : string list) =
   let rec string_of_stack = function
     | [] -> "" 
@@ -65,130 +57,216 @@ fun tbl ->
 
 (******************************************************************************)
 
-(*
-Compiler les types
 
-- do_type      : nom absolu -> type_eff, c'est là qu'on tabule les résultat
+(******************************************************************************)
+
+(** Type checking + constant checking/evaluation
+
+   This is performed (lazily) by 10 mutually recursive functions:
+
+   types checking
+   --------------
+   (1) [type_check env type_name lxm]: type check the type id [type_name]
+   (3) [type_check_do]: untabulated version of [type_check] (do the real work).
 
-- do_prov_type : nom absolu -> type_eff, c'est là qu'on tabule les résultat
+   (2) [type_check_interface]: ditto, but for the interface part
+   (2) [type_check_interface_do]: untabulated version (do the real work)
 
-- check_type_def :
-  * type_info + table de symbole et nom du pack courant
-  * utilisée par do_type et par do_prov_type
-  * utilise, si nécessaire la compil type_exp -> type_eff
-    => voir eval_type/eval_const  
+   (4) [solve_type_idref] solves constant reference (w.r.t. short/long ident)
+
+   constants checking
+   ------------------
+   (5) [const_check env const_name lxm]: eval/check the constant [const_name]
+   (7) [const_check_do] : untabulated version (do the real work)
+
+   (6) [const_check_interface]: ditto, but for the interface part
+   (6) [const_check_interface_do]: untabulated version (do the real work)
+
+   (8) [solve_const_idref] solves constant reference (w.r.t. short/long ident)
+
+    nb : the 4 functions dealing with constants duplicate 90% of the
+    code of the 4 functions dealing with types. It is not easy to
+    factorize them out (because of the 10%). I managed to do it for
+    [type_check] and [const_check], but even there, it is not that clear
+    that it was worthwhile...
 *)
-(*
-Compiler, si besoin, le type identifié par tk à 
-l'intérieur du pack correspondant.
+
+(* Before starting, let's define a few utilitary functions. *)
+
+(** Intermediary results are put into a table. This tabulation handling
+    is common to type and constant checking, and is performed by the
+    2 following functions.
+
+    Since [x] is meant to stand for [type] or [const], those 2
+    functions will lead to the definition of 4 functions:
+    [type_check], [const_check], [type_check_interface],
+    [const_check_interface].
 *)
-(* exported *)
-let rec do_type
-    (this: t)    (* l'env global *)
-    (tk: Ident.long) (* nom du pack + nom du type *)
-    (lxm: Lxm.t) (* l'endroit du source qui a provoqué la demande *)
-    = (
-      try (
-	match Hashtbl.find this.types tk with
-	    Checked res -> res
-	  | Checking -> raise (Recursion_error (tk, ["type ref "^(Lxm.details lxm)]))
-	  | Incorrect -> raise (BadCheckRef_error)
-      ) with
-	  Not_found -> (
-	    Hashtbl.add this.types tk Checking ;
-	    let (p,t) = (Ident.pack_of_long tk, Ident.of_long tk) in
-	    let lenv = SyntaxTab.pack_body_env this.src_tab p in
-	      (* forcément local, sinon erreur *)
-	    let tix = match SymbolTab.find_type lenv t with
-		SymbolTab.Here x -> x
+let x_check tab find_x x_check_do lookup_x_eff this x_long_name lxm =
+  try lookup_x_eff tab x_long_name lxm 
+  with Not_found ->
+    Hashtbl.add tab x_long_name Checking;
+    let (x_pack,xn) = (Ident.pack_of_long x_long_name, Ident.of_long x_long_name) in
+    let x_pack_symbols = SyntaxTab.pack_body_env this.src_tab x_pack in
+    let x_def = match find_x x_pack_symbols xn with
+      | SymbolTab.Here x_def -> x_def
+      | SymbolTab.NotHere _ -> assert false
+    in
+    let res = x_check_do this x_long_name lxm x_pack_symbols x_pack x_def in
+      Hashtbl.replace tab x_long_name (Checked res);
+      res
+
+let x_check_interface 
+    tab find_x x_check x_check_interface_do lookup_x_eff this x_long_name lxm =
+  try lookup_x_eff tab x_long_name lxm
+  with Not_found ->
+    Hashtbl.add tab x_long_name Checking;
+    let (xp,xn) = (Ident.pack_of_long x_long_name, Ident.of_long x_long_name) in
+    let xp_prov_symbols_opt = SyntaxTab.pack_prov_env this.src_tab xp in
+    let res = (* [xp] migth have no provided symbol table *)
+      match xp_prov_symbols_opt with
+	| None -> x_check this x_long_name lxm
+	    (* if [xp] have no provided symbol table, the whole
+	       package is exported. *)
+	| Some xp_prov_symbols ->
+	    let x_def = match find_x xp_prov_symbols xn with
+	      | SymbolTab.Here x -> x
 	      | SymbolTab.NotHere _ -> assert false
 	    in
-	    let res = check_type_def this tk lxm lenv p tix in
-	      Hashtbl.replace this.types  tk (Checked res) ;
-	      res
-	  )
-    ) and
-    (*
-      Compiler, si besoin, la version provided d'un type :
-    *)
-    do_prov_type this tk lxm = (
-      try (
-	match Hashtbl.find this.prov_types tk with
-	    Checked res -> res
-	  | Checking -> raise (Recursion_error (tk, ["type ref "^(Lxm.details lxm)]))
-	  | Incorrect -> raise (BadCheckRef_error)
-      ) with
-	  Not_found -> (
-	    Hashtbl.add this.prov_types tk Checking ;
-	    let (p,t) = (Ident.pack_of_long tk, Ident.of_long tk) in
-	    let res = ( 
-	      match SyntaxTab.pack_prov_env this.src_tab p with
-		  Some penv -> ( 
-		    (* forcément local, sinon erreur *)
-		    let tix = match SymbolTab.find_type penv t with
-			SymbolTab.Here x -> x
-		      | SymbolTab.NotHere _ -> assert false
-		    in
-		      (* on évalue à l'intérieur de provided *)
-		    let prov_type_eff = check_type_def this tk lxm penv p tix in
-		      (* on force la compil de la version body (implémentation) *)
-		    let body_type_eff = do_type this tk lxm in
-		      (* puis, on checke la compatibilité ... *)
-		      match prov_type_eff with
-			  External_type_eff _ -> (
-			    (* ... abstrait -> no souci *)
-			    prov_type_eff
-			  ) 
-			| _ -> (
-			    (* ... pas abstrait : 
-			       on compile la def prov dans l'env body, le résultat doit être
-			       le même que body_type_eff
-			    *)
-			    let lenv = SyntaxTab.pack_body_env this.src_tab p in
-			    let prov_type_eff_bis = check_type_def this tk lxm lenv p tix in
-			      if ( prov_type_eff_bis = body_type_eff ) then (
-				(* ok *)
-				prov_type_eff
-			      ) else (
-				raise(Compile_error (
-					tix.src,
-					"provided type inconsistant with its implementation"
-					  (* Ici ; afficahge + symap ??? *)
-				      ))
-			      )
-			  )  
-		  )
-		|
-		    None -> (
-		      (* pas de provided, on traite en interne ... *)
-		      do_type this tk lxm
-		    )
-	    ) in
-	      (* on stocke ... *)
-	      Hashtbl.replace this.prov_types  tk (Checked res) ;
-	      res
-	  )
-    )
-  (*
-    Compiler une définition de type
-  *)
-      and check_type_def
-    (this: t)           (* l'env global *)
-    tk lxm              (* juste pour les erreurs de récursions *)
-    (penv: SymbolTab.t) (* table des symboles courante *) 
-    (p: Ident.pack_name) (* nom du pack courant *)
-    (tix: SyntaxTree.type_info srcflaged) 
-    = try (
+	      x_check_interface_do this x_long_name lxm xp_prov_symbols xp x_def
+    in
+      Hashtbl.replace tab x_long_name (Checked res);
+      res
+
+(* Returns the tabulated [type] or [const], if it has already been computed;
+   otherwise, raise [Not_found] otherwise. *)
+let lookup_x_eff x_label types_tab x_long_name lxm  =
+    match Hashtbl.find types_tab x_long_name with
+      | Checked res -> res
+      | Checking -> raise (Recursion_error (x_long_name, [x_label^(Lxm.details lxm)]))
+      | Incorrect -> raise (BadCheckRef_error)
+
+let (lookup_type_eff: (item_key, CompiledData.type_eff check_flag) Hashtbl.t -> 
+      Ident.long -> Lxm.t -> CompiledData.type_eff) = 
+  lookup_x_eff "type ref "
+
+let (lookup_const_eff:(item_key, CompiledData.const_eff check_flag) Hashtbl.t -> 
+      Ident.long -> Lxm.t -> CompiledData.const_eff) = 
+  lookup_x_eff "const ref " 
+
+
+(* And now we can start the big mutually recursive definition... *)
+
+(** Tabulated version of [type_check_do]. *)
+let rec (type_check : t -> Ident.long -> Lxm.t -> CompiledData.type_eff) =
+  fun this -> 
+  x_check this.types SymbolTab.find_type type_check_do lookup_type_eff this
+
+(** Tabulated version of [const_check_do]. *)
+and (const_check : t -> Ident.long -> Lxm.t -> CompiledData.const_eff) =
+  fun this -> 
+  x_check this.consts SymbolTab.find_const const_check_do lookup_const_eff this
+
+(** Tabulated version of [type_check_interface_do]. *)
+and (type_check_interface: t -> Ident.long -> Lxm.t -> CompiledData.type_eff) =
+  fun this -> 
+  x_check_interface 
+    this.prov_types SymbolTab.find_type type_check type_check_interface_do 
+    lookup_type_eff this
+
+(** Tabulated version of [const_check_interface_do]. *)
+and (const_check_interface: t -> Ident.long -> Lxm.t -> CompiledData.const_eff) =
+  fun this -> 
+    x_check_interface 
+      this.prov_consts SymbolTab.find_const const_check const_check_interface_do
+      lookup_const_eff this
+
+
+(* now the real work! *)
+and (type_check_interface_do: t -> Ident.long -> Lxm.t -> SymbolTab.t -> 
+      Ident.pack_name -> SyntaxTree.type_info srcflaged -> CompiledData.type_eff) =
+  fun this type_name lxm prov_symbols pack_name type_def ->
+    (* We type check the interface and the body. 
+       For non-abstract types, we also check that both effective types are
+       the same.  *)
+    let body_type_eff = type_check this type_name lxm in
+    let prov_type_eff = 
+      type_check_do this type_name lxm prov_symbols pack_name type_def
+    in
+      match prov_type_eff with
+	| External_type_eff _ -> prov_type_eff (* no check is necessary *)
+	| Bool_type_eff
+	| Int_type_eff
+	| Real_type_eff
+	| Enum_type_eff (_,_)
+	| Array_type_eff (_,_)
+	| Struct_type_eff (_,_)
+	  -> (* Not an abstract type: therefore, we check that [prov_type_eff]
+		is the same as [body_type_eff].
+	     *)
+	    let body_symbols = SyntaxTab.pack_body_env this.src_tab pack_name in
+	    let prov_type_eff_body =
+	      type_check_do this type_name lxm body_symbols pack_name type_def
+	    in
+	      assert (prov_type_eff_body = body_type_eff);
+	      if prov_type_eff_body = body_type_eff then
+		prov_type_eff
+	      else
+		raise(Compile_error (
+			type_def.src,
+			"provided type inconsistant with its implementation" ))
+			  (* Ici ; affichage + sympa ??? *)
+
+
+and (const_check_interface_do: t -> Ident.long -> Lxm.t -> SymbolTab.t -> 
+      Ident.pack_name -> SyntaxTree.const_info srcflaged -> CompiledData.const_eff) =
+  fun this cn lxm prov_symbols p const_def -> 
+    (* on évalue à l'intérieur de provided *)
+    let prov_const_eff = const_check_do this cn lxm prov_symbols p const_def in
+      (* on force la compil de la version body (implémentation) *)
+    let body_const_eff = const_check this cn lxm in
+      (* puis, on checke la compatibilité ... *)
+      match prov_const_eff with
+	  (* les consts provided sont toujours abstraites *)
+	| Extern_const_eff _ ->
+	    (* ... abstrait -> no souci *)
+	    let tp = type_of_const_eff prov_const_eff in
+	    let tb = type_of_const_eff body_const_eff in
+	      if (tp = tb) then body_const_eff 
+	      else 
+		raise(Compile_error (
+			const_def.src,
+			"provided constant inconsistant with its implementation"
+			  (* Ici ; affichage + sympa ??? *)
+		      ))
+	| Bool_const_eff _
+	| Int_const_eff _
+	| Real_const_eff _
+	| Enum_const_eff (_,_)
+	| Struct_const_eff (_,_)
+	| Array_const_eff (_,_)
+	  -> assert false (* pas abstrait => impossible ! *) 
+
+and (type_check_do: t -> Ident.long -> Lxm.t -> SymbolTab.t -> Ident.pack_name ->
+      SyntaxTree.type_info srcflaged -> CompiledData.type_eff) =
+  fun
+    this     (* l'env global*)
+    type_name(* juste pour les erreurs de récursions *)
+    lxm      (* ditto *)
+    symbols (* table courante des symboles *) 
+    p        (* nom du pack courant *)
+    type_def 
+    -> try (
       (* Solveur d'idref pour les  les appels à eval_type/eval_const *)
       let eval_env = {
-	id2const = (solve_const_idref this penv p) ;
-	id2type = (solve_type_idref this penv p) ;
-      } in 
-      let tinfo = tix.it in
+	id2const = (solve_const_idref this symbols p);
+	id2type = (solve_type_idref this symbols p);
+      } 
+      in 
+      let tinfo = type_def.it in
 	match tinfo with
-	    ExternalType s -> External_type_eff (Ident.make_long p s)
-	  | AliasedType (s, texp) -> 
-	      EvalType.f eval_env texp
+	  | ExternalType s -> External_type_eff (Ident.make_long p s)
+	  | AliasedType (s, texp) -> EvalType.f eval_env texp
 	  | EnumType (s, clst) -> (
 	      let n : Ident.long = Ident.make_long p s in
 	      let putpack x = Ident.make_long p x.it in
@@ -198,20 +276,17 @@ let rec do_type
 	  | StructType sti -> (
 	      let make_field (fname : Ident.t) = (
 		let field_def = Hashtbl.find sti.st_ftable fname in
-		let teff = EvalType.f 
-		  eval_env field_def.it.fd_type in
+		let teff = EvalType.f eval_env field_def.it.fd_type in
 		  match field_def.it.fd_value with
-		      None -> (
-			(fname, teff, None)
-		      ) 
+		    | None -> (fname, teff, None)
 		    | Some vexp -> (
 			let veff = EvalConst.eval_const eval_env vexp in
 			  match veff with
-			      [v] -> (
+			    | [v] -> (
 				let tv = type_of_const_eff v in
-				  if (tv = teff) then (
-				    (fname, teff, Some v)
-				  ) else 
+				  if (tv = teff) 
+				  then (fname, teff, Some v)
+				  else 
 				    raise 
 				      (Compile_error(
 					 field_def.src,
@@ -220,14 +295,16 @@ let rec do_type
 					   (string_of_type_eff teff)
 					   (string_of_type_eff tv)
 				       ))
-			      ) 
-			    | _ -> 
+			      )
+			    | [] -> assert false
+			    | _::_ -> 
 				raise ( Compile_error(
 					  field_def.src,
 					  "bad field value: tuple not allowed" 
 					))
 		      ) 
-	      ) in
+	      ) 
+	      in
 	      let eff_fields = List.map make_field sti.st_flist in
 	      let n = Ident.make_long p sti.st_name in
 		Struct_type_eff (n, eff_fields)
@@ -235,141 +312,38 @@ let rec do_type
     ) with
 	(* capte et complete/stoppe les recursions *)
 	Recursion_error (root, stack) -> (
-	  if (root = tk) then (
-	    (* on stoppe *)
-	    recursion_error tix.src stack
-	  ) else (
+	  if (root = type_name) then recursion_error type_def.src stack
+	  else
 	    (* on complete la stack *)
 	    raise ( Recursion_error (root, ("type ref "^(Lxm.details lxm))::stack))
-	  )
 	)
-      and
-    (*
-      Compiler les consts (avec éval statique)
-      
-      - do_const      : nom absolu -> const_eff, c'est là qu'on tabule les résultat
 
-      - do_prov_const : nom absolu -> const_eff, c'est là qu'on tabule les résultat
-
-      - check_const_def :
-      * const_info + table de symbole et nom du pack courant
-      * utilisée par do_const et par do_prov_const
-      * utilise, si nécessaire la compil val_exp -> const_eff
-      => voir eval_type/eval_const 
-    *)
-    do_const
-      (this: t)    (* l'env global *)
-      (ck: Ident.long) (* nom du pack + nom de la const *)
-      (lxm: Lxm.t) (* l'endroit du source qui a provoqué la demande *)
-    = (
-      try (
-	match Hashtbl.find this.consts ck with
-	    Checked res -> res
-	  | Checking -> raise (Recursion_error (ck, ["const ref "^(Lxm.details lxm)]))
-	  | Incorrect -> raise (BadCheckRef_error)
-      ) with
-	  Not_found -> (
-	    Hashtbl.add this.consts ck Checking ;
-	    let (p,c) = Ident.pack_of_long ck, Ident.of_long ck in
-	    let lenv = SyntaxTab.pack_body_env this.src_tab p in
-	      (* forcément locale, sinon erreur *)
-	    let cix = match SymbolTab.find_const lenv c with
-		SymbolTab.Here x -> x
-	      |	SymbolTab.NotHere _ -> assert false
-	    in
-	    let res = check_const_def this ck lxm lenv p cix in
-	      Hashtbl.replace this.consts  ck (Checked res) ;
-	      res
-	  )
-    )
-      and
-    (*
-      Compiler, si besoin, la version provided d'une const :
-      les consts provided sont toujours abstraites
-    *)
-    do_prov_const this ck lxm = (
-      try (
-	match Hashtbl.find this.prov_consts ck with
-	    Checked res -> res
-	  | Checking -> raise (Recursion_error (ck, ["const ref "^(Lxm.details lxm)]))
-	  | Incorrect -> raise (BadCheckRef_error)
-      ) with
-	  Not_found -> (
-	    Hashtbl.add this.prov_consts ck Checking ;
-	    let (p,c) = Ident.pack_of_long ck, Ident.of_long ck in
-	    let res = ( 
-	      match SyntaxTab.pack_prov_env this.src_tab p with
-		  Some penv -> ( 
-		    (* forcément local, sinon erreur *)
-		    let cix = match SymbolTab.find_const penv c with
-			SymbolTab.Here x -> x
-		      |	SymbolTab.NotHere _ -> assert false
-		    in
-		      (* on évalue à l'intérieur de provided *)
-		    let prov_const_eff = check_const_def this ck lxm penv p cix in
-		      (* on force la compil de la version body (implémentation) *)
-		    let body_const_eff = do_const this ck lxm in
-		      (* puis, on checke la compatibilité ... *)
-		      match prov_const_eff with
-			  (* les consts provided sont toujours abstraites *)
-			  Extern_const_eff _ -> (
-			    (* ... abstrait -> no souci *)
-			    let tp = type_of_const_eff prov_const_eff in
-			    let tb = type_of_const_eff body_const_eff in
-			      if (tp = tb) then body_const_eff 
-			      else (
-				raise(Compile_error (
-					cix.src,
-					"provided constant inconsistant with its implementation"
-					  (* Ici ; affichage + sympa ??? *)
-				      ))
-			      )
-			  ) 
-			| _ -> (
-			    (* pas abstrait => impossible ! *) 
-			    assert false
-			  )  
-		  ) 
-		|
-		    None -> (
-		      (* pas de provided, on traite en interne ... *)
-		      do_const this ck lxm
-		    )
-	    ) in
-	      (* on stocke ... *)
-	      Hashtbl.replace this.prov_consts  ck (Checked res) ;
-	      res
-	  )
-    )
-      and
-    (*
-      Compiler une définition de const
+and (const_check_do : t -> Ident.long -> Lxm.t -> SymbolTab.t -> Ident.pack_name -> 
+      SyntaxTree.const_info srcflaged -> CompiledData.const_eff) =
+  fun this cn lxm symbols currpack const_def ->
+    (* [cn] and [lxm] are used for recursion errors. 
+       [symbols] is the current symbol table.
     *)
-    check_const_def
-      (this: t)           (* l'env global *)
-      ck lxm              (* juste pour les erreurs de récursion *)
-      (penv: SymbolTab.t) (* table des symboles courante *) 
-      (p: Ident.pack_name)         (* nom du pack courant *)
-      (cix: SyntaxTree.const_info srcflaged) 
-    = try (
+    try (
       (* Solveur d'idref pour les  les appels à eval_type/eval_const *)
       let eval_env = {
-	id2const = (solve_const_idref this penv p) ;
-	id2type = (solve_type_idref this penv p) ;
-      } in 
-      let cinfo = cix.it in
+	id2const = (solve_const_idref this symbols currpack) ;
+	id2type = (solve_type_idref this symbols currpack) ;
+      } 
+      in 
+      let cinfo = const_def.it in
 	match cinfo with
-	  | ExternalConst (id, texp) -> (
-	      Extern_const_eff ((Ident.make_long p id), EvalType.f eval_env texp)
-	    ) 
-	  | EnumConst (id, texp) -> (
-	      Enum_const_eff ((Ident.make_long p id), EvalType.f eval_env texp)
-	    )
+	  | ExternalConst (id, texp) ->
+	      Extern_const_eff ((Ident.make_long currpack id), EvalType.f eval_env texp)
+
+	  | EnumConst (id, texp) -> 
+	      Enum_const_eff ((Ident.make_long currpack id), EvalType.f eval_env texp)
+
 	  | DefinedConst (id, texp_opt, vexp ) -> (
 	      match (EvalConst.eval_const eval_env vexp) with
-		  [ceff] -> (
+		| [ceff] -> (
 		    match texp_opt with
-			None -> ( ceff)
+		      | None -> ( ceff)
 		      | Some texp -> (
 			  let tdecl = EvalType.f eval_env texp in
 			  let teff =  type_of_const_eff ceff in
@@ -377,7 +351,7 @@ let rec do_type
 			    else 
 			      raise 
 				(Compile_error 
-				   (cix.src , 
+				   (const_def.src , 
 				    Printf.sprintf
 				      " this constant is declared as '%s' but evaluated as '%s'"
 				      (string_of_type_eff tdecl)
@@ -385,85 +359,67 @@ let rec do_type
 				   ))
 			)
 		  )
-		| _ -> raise (Compile_error
-				(cix.src, 
-				 "bad constant value: tuple not allowed"))
+		| [] -> assert false
+		| _::_ -> raise (Compile_error
+				   (const_def.src, 
+				    "bad constant value: tuple not allowed"))
 	    )
     ) with Recursion_error (root, stack) -> (
       (* capte et complete/stoppe les recursions *)
-      if (root = ck) then (
-	recursion_error cix.src stack
+      if (root = cn) then (
+	recursion_error const_def.src stack
       ) else (
 	(* on complete la stack *)
 	raise ( Recursion_error (root, ("const ref "^(Lxm.details lxm))::stack))
       )
     )
-      and
-    (*
-      Résolution des référence de types et de constantes
-      
-      Les premiers arguments sont destinés à être currifiés :
-      on obtient alors un "idref -> type_eff"
-    *)
-    solve_type_idref
-      (this: t)           (* l'env global *)
-      (penv: SymbolTab.t) (* table des symboles courante *) 
-      (curpack: Ident.pack_name) 
-      (idr: Ident.idref)
-      (lxm: Lxm.t)
-    = (
-      let s = Ident.name_of_idref idr in
-	match Ident.pack_of_idref idr with
-	    Some p -> (
-	      (* référence absolue -> on refile le boulot à this *)
-	      do_prov_type this (Ident.make_long p s) lxm
-	    ) 
-	  | None -> (
-	      (* on passe par penv pour savoir quoi faire ... *)
-	      try (
-		match (SymbolTab.find_type penv s) with
-		    SymbolTab.Here _ -> (
-		      do_type this (Ident.make_long curpack s) lxm
-		    ) 
-		  | SymbolTab.NotHere fid -> (
-		      (* référence absolue -> on refile le boulot à this *)
-		      do_prov_type this fid lxm
-		    )
-	      ) with Not_found -> (
-		raise(Compile_error(lxm,"unbounded type ident"))
-	      )
-	    )
-    ) and
-    solve_const_idref
-      (this: t)           (* l'env global *)
-      (penv: SymbolTab.t) (* table des symboles courante *) 
-      (curpack: Ident.pack_name)
-      (idr: Ident.idref)
-      (lxm: Lxm.t)
-    = (
-      let s = Ident.name_of_idref idr in
-	match (Ident.pack_of_idref idr) with
-	    Some p -> (
-	      (* référence absolue -> on refile le boulot à this *)
-	      do_prov_const this (Ident.make_long p s) lxm
-	    ) 
-	  | None -> (
-	      (* Printf.printf "solve_const_idref %s\n" s ; *)
-	      (* on passe par penv pour savoir quoi faire ... *)
-	      try (
-		match (SymbolTab.find_const penv s) with
-		    SymbolTab.Here _ -> (
-		      do_const this (Ident.make_long curpack s) lxm
-		    ) 
-		  |SymbolTab.NotHere fid -> (
-		      (* référence absolue -> on refile le boulot à this *)
-		      do_prov_const this fid lxm
-		    )
-	      ) with Not_found -> (
-		raise(Compile_error(lxm,"unbounded const ident"))
-	      )
-	    )
-    )
+
+(** solving type and constant references *)
+and (solve_type_idref : t -> SymbolTab.t -> Ident.pack_name -> Ident.idref -> Lxm.t
+      -> CompiledData.type_eff) =
+  fun this symbols currpack idr lxm ->
+    let s = Ident.name_of_idref idr in
+      match Ident.pack_of_idref idr with
+	| Some p ->
+	    (* référence absolue -> on refile le boulot à this *)
+	    type_check_interface this (Ident.make_long p s) lxm
+	      
+	| None -> 
+	    (* on passe par symbols pour savoir quoi faire ... *)
+	    try 
+	      match (SymbolTab.find_type symbols s) with
+		| SymbolTab.Here _ ->
+		    type_check this (Ident.make_long currpack s) lxm
+		      
+		| SymbolTab.NotHere fid ->
+		    (* référence absolue -> on refile le boulot à this *)
+		    type_check_interface this fid lxm
+		      
+	    with Not_found -> 
+	      raise(Compile_error(lxm,"unbounded type ident"))
+		
+and (solve_const_idref : t -> SymbolTab.t -> Ident.pack_name -> Ident.idref ->
+      Lxm.t -> const_eff) =
+  fun this symbols curpack idr lxm -> 
+    let s = Ident.name_of_idref idr in
+      match (Ident.pack_of_idref idr) with
+	| Some p ->
+	    (* référence absolue -> on refile le boulot à this *)
+	    const_check_interface this (Ident.make_long p s) lxm
+	| None ->
+	    (* Printf.printf "solve_const_idref %s\n" s ; *)
+	    (* on passe par symbols pour savoir quoi faire ... *)
+	    try
+	      match (SymbolTab.find_const symbols s) with
+		| SymbolTab.Here _ ->
+		    const_check this (Ident.make_long curpack s) lxm
+		| SymbolTab.NotHere fid ->
+		    (* référence absolue -> on refile le boulot à this *)
+		    const_check_interface this fid lxm
+	    with Not_found ->
+	      raise(Compile_error(lxm,"unbounded const ident"))
+	 
+  
 
 (******************************************************************************)
 (* exported *)
@@ -492,27 +448,44 @@ let (do_node: t -> CompiledData.node_key -> CompiledData.node_eff) =
 let test_types (this: t) = (
   (* src_tab : SyntaxTab.t; *)
   let testpack pn = (
-    Printf.printf "package %s\n" (Ident.pack_name_to_string pn);
+    Verbose.printf " * package %s\n" (Ident.pack_name_to_string pn);
     let stab = match SyntaxTab.pack_prov_env this.src_tab pn with
 	Some tab -> tab
       |	None -> SyntaxTab.pack_body_env this.src_tab pn
-    in 
-    let testtype n v = (
+    in
+    let testtype n v =
       match v with
-	  SymbolTab.Here cix -> (
+	| SymbolTab.Here const_def ->
 	    (* Printf.printf "   const %s \n" n  *)
-	    let teff = do_prov_type this (Ident.make_long pn n) Lxm.dummy  in
-	      Printf.printf "   type %s -> %s\n" (Ident.to_string n) 
+	    let teff = type_check_interface this (Ident.make_long pn n) Lxm.dummy  in
+	      Printf.printf "\t\ttype %s = %s\n" (Ident.to_string n) 
 		(string_of_type_eff teff)
-	  ) 
-	| SymbolTab.NotHere fid -> (
-	    Printf.printf "   type %s -> %s\n" (Ident.to_string n) (Ident.string_of_long fid) ;
-	    )
-    ) 
+	  
+	| SymbolTab.NotHere fid ->
+	    Printf.printf "\t\ttype %s = %s (imported)\n" 
+	      (Ident.to_string n) 
+	      (Ident.string_of_long fid) ;
+    in
+    let testconst n v =
+      match v with
+	| SymbolTab.Here const_def ->
+	    (* Printf.printf "   const %s \n" n  *)
+	    let teff = type_check_interface this (Ident.make_long pn n) Lxm.dummy  in
+	      Printf.printf "\t\ttype %s = %s\n" (Ident.to_string n) 
+		(string_of_type_eff teff)
+	  
+	| SymbolTab.NotHere fid ->
+	    Printf.printf "\t\ttype %s = %s (imported)\n" 
+	      (Ident.to_string n) 
+	      (Ident.string_of_long fid) ;
     in
-      SymbolTab.iter_types stab testtype
+      Verbose.print_string "\tExported types:\n";
+      SymbolTab.iter_types stab testtype;
+(*       Verbose.print_string "\tExported constants:\n"; *)
+(*       SymbolTab.iter_consts stab testconst *)
   ) 
   in
   let plist = SyntaxTab.pack_list this.src_tab in 
+    Verbose.print_string "*** Dump the exported items of the packages.\n";
     List.iter testpack plist
 )
diff --git a/src/lazyCompiler.mli b/src/lazyCompiler.mli
index 2a02a8540da575c73c00e36b69d5d7566a0976dd..63acc69c283b7f76ee378907b052bc31fcf6e3a2 100644
--- a/src/lazyCompiler.mli
+++ b/src/lazyCompiler.mli
@@ -1,4 +1,6 @@
-(** Time-stamp: <modified the 19/12/2007 (at 09:50) by Erwan Jahier> *)
+(** Time-stamp: <modified the 29/01/2008 (at 15:43) by Erwan Jahier> *)
+
+(** nb: compiling = type checking + constant evaluation *)
 
 
 (** A lazy compiler is an internal structure that contains tables
@@ -8,18 +10,9 @@
 *)
 type t
 
-(* Create en lazy compiler. *)
+(* Create a lazy compiler. *)
 val create : SyntaxTab.t -> t
 
-(** Compiles one type. 
-
-    nb: modifies its first argument!
- *)
-val do_type : t -> Ident.long -> Lxm.t -> CompiledData.type_eff
-
-(** Compiles one provided type *)
-val do_prov_type : t -> Ident.long -> Lxm.t -> CompiledData.type_eff
-(* val do_prov_const : t -> Ident.long -> Lxm.t -> CompiledData.type_eff *)
 
 (** Compiles one node *)
 val do_node : t -> CompiledData.node_key -> CompiledData.node_eff
diff --git a/src/main.ml b/src/main.ml
index 7554fad7902deddaf2d861e9a55e2ac7b0e7b146..21de61c413a8f199b5eee5f502cc12c95d4d90cb 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 28/01/2008 (at 14:10) by Erwan Jahier> *)
+(** Time-stamp: <modified the 28/01/2008 (at 14:51) by Erwan Jahier> *)
 
 (** Here follows a description of the different modules used by this lus2lic compiler.
 
@@ -24,7 +24,7 @@ which results into a parse tree containing raw source expressions.
 syntaxTab is a kind of layer above syntaxTree to make things easier afterwards.
 
 
-(3) Finally, the compilation (checking+const/type evaluation) is performed.
+(3) Finally, the compilation (type checking+const/type evaluation) is performed.
 
    compile.ml
       lazyCompiler.mli/ml
diff --git a/src/symbolTab.ml b/src/symbolTab.ml
index 6cdbdd164ad504ac92f2708a5df0743901a54da5..e70bca2a8d1e9bfc2512e7849a8dd150c4c4273a 100644
--- a/src/symbolTab.ml
+++ b/src/symbolTab.ml
@@ -1,3 +1,4 @@
+(** Time-stamp: <modified the 30/01/2008 (at 09:44) by Erwan Jahier> *)
 
 (*
 Sous-module pour SyntaxTab 
@@ -11,16 +12,16 @@ type 'a hereflaged =
 | NotHere of Ident.long
 
 type t = {
-  st_consts : (Ident.t , (const_info srcflaged) hereflaged) Hashtbl.t ;
-  st_types : (Ident.t , (type_info srcflaged) hereflaged) Hashtbl.t ;
-  st_opers : (Ident.t , (oper_info srcflaged) hereflaged) Hashtbl.t ;
+  st_consts: (Ident.t , (const_info srcflaged) hereflaged) Hashtbl.t ;
+  st_types : (Ident.t , (type_info  srcflaged) hereflaged) Hashtbl.t ;
+  st_opers : (Ident.t , (oper_info  srcflaged) hereflaged) Hashtbl.t ;
 } 
 
 (* Création/initialisation d'une symbol_tab *)
 let create () = {
    st_consts = Hashtbl.create 50;
-   st_types = Hashtbl.create 50;
-   st_opers = Hashtbl.create 50;
+   st_types  = Hashtbl.create 50;
+   st_opers  = Hashtbl.create 50;
 }
 
 let find_type (this: t) (id: Ident.t) = (
diff --git a/src/symbolTab.mli b/src/symbolTab.mli
index ccc150909b31584c15acc4cec83f4537ed3b56f4..b3dfd3900a56c45e6f44c054a8f340058d55e9a7 100644
--- a/src/symbolTab.mli
+++ b/src/symbolTab.mli
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 18/12/2007 (at 11:10) by Erwan Jahier> *)
+(** Time-stamp: <modified the 30/01/2008 (at 09:53) by Erwan Jahier> *)
 
 (**********************************************************
 Sous-module pour SyntaxTab 
@@ -14,8 +14,8 @@ qui sont par d
 ***********************************************************)
 
 type 'a hereflaged =
-    Here of 'a
-  | NotHere of Ident.long
+    Here of 'a            (* local items *) 
+  | NotHere of Ident.long (* imported items *)
 
 type t
 
diff --git a/src/syntaxTab.ml b/src/syntaxTab.ml
index 56bb62638bd8b04a1638e14e8695068fd42238ea..7bd1df14998c17a5e857a013b39d38ee91a4f777 100644
--- a/src/syntaxTab.ml
+++ b/src/syntaxTab.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 28/01/2008 (at 14:16) by Erwan Jahier> *)
+(** Time-stamp: <modified the 30/01/2008 (at 10:44) by Erwan Jahier> *)
 
 (** 
     Table des infos sources : une couche au dessus de SyntaxTree pour mieux
@@ -399,7 +399,7 @@ let (dump : t -> unit) =
 	(fun pm -> p (SyntaxTree.pack_or_model_to_string pm); p "\n\t\t") 
 	x.st_list ;
       
-      p "\n\t - Raw module table: ";
+      p "\n\t - Raw model table: ";
       (* st_raw_mod_tab  : (Ident.t , model_info srcflaged) Hashtbl.t ; *)
       Hashtbl.iter 
 	(fun id _mi -> p ((Ident.to_string id) ^ " "))
diff --git a/src/syntaxTab.mli b/src/syntaxTab.mli
index 345d6ddb50a379c31e12fc29cbf99574267c51cd..8a79adc275e47db1d3c5c1816b4fbde55e8e33ef 100644
--- a/src/syntaxTab.mli
+++ b/src/syntaxTab.mli
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 17/12/2007 (at 18:02) by Erwan Jahier> *)
+(** Time-stamp: <modified the 30/01/2008 (at 09:47) by Erwan Jahier> *)
 
 (** source info tables: tabulated version of the parse tree 
 
@@ -18,8 +18,9 @@ val create : SyntaxTree.pack_or_model list -> t
 
 (* accès aux infos *)
 val pack_body_env : t -> Ident.pack_name -> SymbolTab.t
-val pack_prov_env : t -> Ident.pack_name -> SymbolTab.t option
 
+(** A package may have no provided part *)
+val pack_prov_env : t -> Ident.pack_name -> SymbolTab.t option
 
 (* Liste des noms de packs *)
 val pack_list : t -> Ident.pack_name list 
diff --git a/src/syntaxTree.ml b/src/syntaxTree.ml
index bd1927bc5dadb64fc73090fa004a0e0330a1ac74..38176514af9f424996eeb804abc734b2884e1e2f 100644
--- a/src/syntaxTree.ml
+++ b/src/syntaxTree.ml
@@ -1,9 +1,9 @@
-(** Time-stamp: <modified the 28/01/2008 (at 14:01) by Erwan Jahier> *)
+(** Time-stamp: <modified the 30/01/2008 (at 09:58) by Erwan Jahier> *)
 
 
 (** (Raw) Abstract syntax tree of source programs. 
 
-This syntax tree represented by Hash tables.
+    This syntax tree represented by Hash tables.
 *)
 
 open Printf
diff --git a/src/test/test.res b/src/test/test.res
index 86852591d0806e6e189c593c820fe003beb2cb95..a30bbe7b095e3337a154b5f644d1d494f5b98b4d 100644
--- a/src/test/test.res
+++ b/src/test/test.res
@@ -25,30 +25,37 @@ Non-regression tests
    init symbol tables for pack pbool
    init symbol tables for pack preal
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:modSimple (model) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		modSimple (model) 
 		pint (pack) 
 		pbool (pack) 
 		preal (pack) 
 		inter (pack) 
 		mainPack (pack) 
 		
-	 Raw module table: modSimple 
-	 Raw Package table: inter mainPack pint pbool preal 
-	 Package manager table: inter mainPack pint pbool preal 
+	 - Raw model table: modSimple 
+	 - Raw Package table: inter mainPack pint pbool preal 
+	 - Package manager table: inter mainPack pint pbool preal 
 End of Syntax table dump. »
 -- MAIN NODE: "pint::main"
-package preal
-   type t -> real
-package pbool
-   type t -> bool
-package pint
-   type t -> int
-package mainPack
-   type selType -> inter::selType
-package inter
-   type t -> preal::t
-   type selType -> inter::selType
+*** Dump the exported items of the packages.
+ * package preal
+	Exported types:
+		type t = real
+ * package pbool
+	Exported types:
+		type t = bool
+ * package pint
+	Exported types:
+		type t = int
+ * package mainPack
+	Exported types:
+		type selType = inter::selType (imported)
+ * package inter
+	Exported types:
+		type t = preal::t (imported)
+		type selType = inter::selType
  
 ====> ../lus2lic -vl 3 struct0.lus
 *** SyntaxTab.create pass 1
@@ -59,16 +66,19 @@ package inter
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:struct0 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		struct0 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "struct0::main"
-package dummy
-   type Toto -> dummy::Toto
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
+		type Toto = dummy::Toto
  
 ====> ../lus2lic -vl 3 t0.lus
 *** SyntaxTab.create pass 1
@@ -81,15 +91,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t0 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t0 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t0::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 t2.lus
 *** SyntaxTab.create pass 1
@@ -103,15 +116,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t2 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t2 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t2::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 test.lus
 *** SyntaxTab.create pass 1
@@ -122,16 +138,19 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack P1
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:P1 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		P1 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: P1 
-	 Package manager table: P1 
+	 - Raw model table: 
+	 - Raw Package table: P1 
+	 - Package manager table: P1 
 End of Syntax table dump. »
 -- MAIN NODE: "P1::main"
-package P1
-   type titi -> P1::titi
+*** Dump the exported items of the packages.
+ * package P1
+	Exported types:
+		type titi = P1::titi
  
 ====> ../lus2lic -vl 3 trivial.lus
 *** SyntaxTab.create pass 1
@@ -141,15 +160,18 @@ package P1
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:trivial (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		trivial (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "trivial::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 x.lus
 *** SyntaxTab.create pass 1
@@ -163,15 +185,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:x (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		x (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "x::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 consensus.lus
 *** SyntaxTab.create pass 1
@@ -184,15 +209,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:consensus (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		consensus (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "consensus::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 left.lus
 *** SyntaxTab.create pass 1
@@ -203,16 +231,19 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:left (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		left (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "left::main"
-package dummy
-   type truc -> dummy::truc
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
+		type truc = dummy::truc
  
 ====> ../lus2lic -vl 3 packs.lus
 *** SyntaxTab.create pass 1
@@ -249,34 +280,41 @@ package dummy
    init symbol tables for pack pbool
    init symbol tables for pack preal
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:modSimple (model) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		modSimple (model) 
 		pint (pack) 
 		pbool (pack) 
 		preal (pack) 
 		inter (pack) 
 		mainPack (pack) 
 		
-	 Raw module table: modSimple 
-	 Raw Package table: inter mainPack pint pbool preal 
-	 Package manager table: inter mainPack pint pbool preal 
+	 - Raw model table: modSimple 
+	 - Raw Package table: inter mainPack pint pbool preal 
+	 - Package manager table: inter mainPack pint pbool preal 
 End of Syntax table dump. »
 -- MAIN NODE: "pint::main"
-package preal
-   type t -> real
-package pbool
-   type t -> bool
-package pint
-   type t -> int
-package mainPack
-   type selType -> inter::selType
-   type toto -> inter::toto
-   type T -> int^8
-   type couleurs -> mainPack::couleurs
-package inter
-   type t -> preal::t
-   type selType -> inter::selType
-   type toto -> inter::toto
+*** Dump the exported items of the packages.
+ * package preal
+	Exported types:
+		type t = real
+ * package pbool
+	Exported types:
+		type t = bool
+ * package pint
+	Exported types:
+		type t = int
+ * package mainPack
+	Exported types:
+		type selType = inter::selType (imported)
+		type toto = inter::toto (imported)
+		type T = int^8
+		type couleurs = mainPack::couleurs
+ * package inter
+	Exported types:
+		type t = preal::t (imported)
+		type selType = inter::selType
+		type toto = inter::toto
  
 ====> ../lus2lic -vl 3 p.lus
 *** SyntaxTab.create pass 1
@@ -303,30 +341,37 @@ package inter
    init symbol tables for pack pbool
    init symbol tables for pack preal
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:modSimple (model) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		modSimple (model) 
 		pint (pack) 
 		pbool (pack) 
 		preal (pack) 
 		inter (pack) 
 		mainPack (pack) 
 		
-	 Raw module table: modSimple 
-	 Raw Package table: inter mainPack pint pbool preal 
-	 Package manager table: inter mainPack pint pbool preal 
+	 - Raw model table: modSimple 
+	 - Raw Package table: inter mainPack pint pbool preal 
+	 - Package manager table: inter mainPack pint pbool preal 
 End of Syntax table dump. »
 -- MAIN NODE: "pint::main"
-package preal
-   type t -> real
-package pbool
-   type t -> bool
-package pint
-   type t -> int
-package mainPack
-   type selType -> inter::selType
-package inter
-   type t -> preal::t
-   type selType -> inter::selType
+*** Dump the exported items of the packages.
+ * package preal
+	Exported types:
+		type t = real
+ * package pbool
+	Exported types:
+		type t = bool
+ * package pint
+	Exported types:
+		type t = int
+ * package mainPack
+	Exported types:
+		type selType = inter::selType (imported)
+ * package inter
+	Exported types:
+		type t = preal::t (imported)
+		type selType = inter::selType
  
 ====> ../lus2lic -vl 3 t.lus
 *** SyntaxTab.create pass 1
@@ -339,15 +384,18 @@ package inter
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 trivial.lus
 *** SyntaxTab.create pass 1
@@ -357,15 +405,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:trivial (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		trivial (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "trivial::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 t1.lus
 *** SyntaxTab.create pass 1
@@ -377,12 +428,15 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t1 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t1 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t1::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
diff --git a/src/test/test.res.exp b/src/test/test.res.exp
index 86852591d0806e6e189c593c820fe003beb2cb95..a30bbe7b095e3337a154b5f644d1d494f5b98b4d 100644
--- a/src/test/test.res.exp
+++ b/src/test/test.res.exp
@@ -25,30 +25,37 @@ Non-regression tests
    init symbol tables for pack pbool
    init symbol tables for pack preal
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:modSimple (model) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		modSimple (model) 
 		pint (pack) 
 		pbool (pack) 
 		preal (pack) 
 		inter (pack) 
 		mainPack (pack) 
 		
-	 Raw module table: modSimple 
-	 Raw Package table: inter mainPack pint pbool preal 
-	 Package manager table: inter mainPack pint pbool preal 
+	 - Raw model table: modSimple 
+	 - Raw Package table: inter mainPack pint pbool preal 
+	 - Package manager table: inter mainPack pint pbool preal 
 End of Syntax table dump. »
 -- MAIN NODE: "pint::main"
-package preal
-   type t -> real
-package pbool
-   type t -> bool
-package pint
-   type t -> int
-package mainPack
-   type selType -> inter::selType
-package inter
-   type t -> preal::t
-   type selType -> inter::selType
+*** Dump the exported items of the packages.
+ * package preal
+	Exported types:
+		type t = real
+ * package pbool
+	Exported types:
+		type t = bool
+ * package pint
+	Exported types:
+		type t = int
+ * package mainPack
+	Exported types:
+		type selType = inter::selType (imported)
+ * package inter
+	Exported types:
+		type t = preal::t (imported)
+		type selType = inter::selType
  
 ====> ../lus2lic -vl 3 struct0.lus
 *** SyntaxTab.create pass 1
@@ -59,16 +66,19 @@ package inter
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:struct0 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		struct0 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "struct0::main"
-package dummy
-   type Toto -> dummy::Toto
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
+		type Toto = dummy::Toto
  
 ====> ../lus2lic -vl 3 t0.lus
 *** SyntaxTab.create pass 1
@@ -81,15 +91,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t0 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t0 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t0::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 t2.lus
 *** SyntaxTab.create pass 1
@@ -103,15 +116,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t2 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t2 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t2::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 test.lus
 *** SyntaxTab.create pass 1
@@ -122,16 +138,19 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack P1
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:P1 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		P1 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: P1 
-	 Package manager table: P1 
+	 - Raw model table: 
+	 - Raw Package table: P1 
+	 - Package manager table: P1 
 End of Syntax table dump. »
 -- MAIN NODE: "P1::main"
-package P1
-   type titi -> P1::titi
+*** Dump the exported items of the packages.
+ * package P1
+	Exported types:
+		type titi = P1::titi
  
 ====> ../lus2lic -vl 3 trivial.lus
 *** SyntaxTab.create pass 1
@@ -141,15 +160,18 @@ package P1
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:trivial (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		trivial (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "trivial::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 x.lus
 *** SyntaxTab.create pass 1
@@ -163,15 +185,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:x (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		x (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "x::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 consensus.lus
 *** SyntaxTab.create pass 1
@@ -184,15 +209,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:consensus (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		consensus (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "consensus::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 left.lus
 *** SyntaxTab.create pass 1
@@ -203,16 +231,19 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:left (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		left (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "left::main"
-package dummy
-   type truc -> dummy::truc
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
+		type truc = dummy::truc
  
 ====> ../lus2lic -vl 3 packs.lus
 *** SyntaxTab.create pass 1
@@ -249,34 +280,41 @@ package dummy
    init symbol tables for pack pbool
    init symbol tables for pack preal
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:modSimple (model) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		modSimple (model) 
 		pint (pack) 
 		pbool (pack) 
 		preal (pack) 
 		inter (pack) 
 		mainPack (pack) 
 		
-	 Raw module table: modSimple 
-	 Raw Package table: inter mainPack pint pbool preal 
-	 Package manager table: inter mainPack pint pbool preal 
+	 - Raw model table: modSimple 
+	 - Raw Package table: inter mainPack pint pbool preal 
+	 - Package manager table: inter mainPack pint pbool preal 
 End of Syntax table dump. »
 -- MAIN NODE: "pint::main"
-package preal
-   type t -> real
-package pbool
-   type t -> bool
-package pint
-   type t -> int
-package mainPack
-   type selType -> inter::selType
-   type toto -> inter::toto
-   type T -> int^8
-   type couleurs -> mainPack::couleurs
-package inter
-   type t -> preal::t
-   type selType -> inter::selType
-   type toto -> inter::toto
+*** Dump the exported items of the packages.
+ * package preal
+	Exported types:
+		type t = real
+ * package pbool
+	Exported types:
+		type t = bool
+ * package pint
+	Exported types:
+		type t = int
+ * package mainPack
+	Exported types:
+		type selType = inter::selType (imported)
+		type toto = inter::toto (imported)
+		type T = int^8
+		type couleurs = mainPack::couleurs
+ * package inter
+	Exported types:
+		type t = preal::t (imported)
+		type selType = inter::selType
+		type toto = inter::toto
  
 ====> ../lus2lic -vl 3 p.lus
 *** SyntaxTab.create pass 1
@@ -303,30 +341,37 @@ package inter
    init symbol tables for pack pbool
    init symbol tables for pack preal
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:modSimple (model) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		modSimple (model) 
 		pint (pack) 
 		pbool (pack) 
 		preal (pack) 
 		inter (pack) 
 		mainPack (pack) 
 		
-	 Raw module table: modSimple 
-	 Raw Package table: inter mainPack pint pbool preal 
-	 Package manager table: inter mainPack pint pbool preal 
+	 - Raw model table: modSimple 
+	 - Raw Package table: inter mainPack pint pbool preal 
+	 - Package manager table: inter mainPack pint pbool preal 
 End of Syntax table dump. »
 -- MAIN NODE: "pint::main"
-package preal
-   type t -> real
-package pbool
-   type t -> bool
-package pint
-   type t -> int
-package mainPack
-   type selType -> inter::selType
-package inter
-   type t -> preal::t
-   type selType -> inter::selType
+*** Dump the exported items of the packages.
+ * package preal
+	Exported types:
+		type t = real
+ * package pbool
+	Exported types:
+		type t = bool
+ * package pint
+	Exported types:
+		type t = int
+ * package mainPack
+	Exported types:
+		type selType = inter::selType (imported)
+ * package inter
+	Exported types:
+		type t = preal::t (imported)
+		type selType = inter::selType
  
 ====> ../lus2lic -vl 3 t.lus
 *** SyntaxTab.create pass 1
@@ -339,15 +384,18 @@ package inter
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 trivial.lus
 *** SyntaxTab.create pass 1
@@ -357,15 +405,18 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:trivial (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		trivial (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "trivial::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
  
 ====> ../lus2lic -vl 3 t1.lus
 *** SyntaxTab.create pass 1
@@ -377,12 +428,15 @@ package dummy
 *** SyntaxTab.create pass 3
    init symbol tables for pack dummy
 *** SyntaxTab.create done
- « Syntax table dump:
- 	 Package or model list:t1 (pack) 
+*** « Syntax table dump:
+ 	 - Package or model list:
+		t1 (pack) 
 		
-	 Raw module table: 
-	 Raw Package table: dummy 
-	 Package manager table: dummy 
+	 - Raw model table: 
+	 - Raw Package table: dummy 
+	 - Package manager table: dummy 
 End of Syntax table dump. »
 -- MAIN NODE: "t1::main"
-package dummy
+*** Dump the exported items of the packages.
+ * package dummy
+	Exported types:
diff --git a/src/version.ml b/src/version.ml
index a4071868963ab295be7dfa7dc84283e0fe2606dd..2da7c792a6ede0934562a69964b75d77b6d9c109 100644
--- a/src/version.ml
+++ b/src/version.ml
@@ -1,6 +1,6 @@
 (* Automatically generated from src/Makefile *) 
 let tool = "lus2lic"
 let branch = "u0"
-let commit = "11"
-let sha_1 = "cbec21161346256d244e19c3f507170352f9bb4f"
+let commit = "12"
+let sha_1 = "d0b9462e6b43f8249a7ab09bff759174e4cfcaa4"
 let str = (branch ^ "." ^ commit)