diff --git a/.lurette.prcs_aux b/.lurette.prcs_aux index d45b6a9a6a419092ed3928944f45f85307098472..4d054675b8d4cc1740ec186919e7e833de9d12bc 100644 --- a/.lurette.prcs_aux +++ b/.lurette.prcs_aux @@ -1,18 +1,18 @@ ;; This file is automatically generated, editing may cause PRCS to do ;; REALLY bad things. (Created-By-Prcs-Version 1 3 3) -(source/automata.ml 15954 1036675177 b/47_automata.m 1.6) -(source/formula.mli 2811 1045834161 44_formula.ml 1.21) +(source/automata.ml 19223 1046682069 b/47_automata.m 1.7) +(source/formula.mli 2862 1046682069 44_formula.ml 1.22) (test/heater_float.lus 177 1034351455 b/44_heater_flo 1.2) -(test/passerelle.luc 999 1045841411 b/17_passerelle 1.9) +(test/passerelle.luc 995 1046682069 b/17_passerelle 1.10) (doc/synthese 2556 1007379917 b/2_synthese 1.1) (source/polyhedron.mli 940 1045489850 d/26_polyhedron 1.1) -(test/temp_float.luc 745 1045841411 b/51_temp_float 1.5) +(test/temp_float.luc 743 1046682069 b/51_temp_float 1.6) (test/ControleurPorte.rif.exp 4860 1034951022 b/29_Controleur 1.11) (doc/ocamldoc.sty 1380 1008328137 b/12_ocamldoc.s 1.1) (mlcuddidl/Makefile 7150 1034006019 d/9_Makefile 1.1) (test/tram_simple.h 1746 1013519411 b/25_tram_simpl 1.1) -(test/time-ossau.res 6497 1046074449 b/49_time.res 1.35) +(test/time-ossau.res 8312 1046682069 b/49_time.res 1.36) (mlcuddidl/session.ml 603 1034006019 c/37_session.ml 1.1) (cuddaux/cuddauxGenCof.c 12011 1034006019 c/29_cuddauxGen 1.1) (mlcuddidl/rdd.idl 14806 1034006019 c/42_rdd.idl 1.1) @@ -21,20 +21,20 @@ (mlcuddidl/sedscript 203 1034006019 c/38_sedscript 1.1) (source/automata.mli 3396 1033738731 b/46_automata.m 1.3) (test/heater_int.rif.exp 886 1034951022 b/28_heater_int 1.10) -(source/ne.ml 9275 1045489850 c/21_ne.ml 1.5) +(source/ne.ml 9281 1046682069 c/21_ne.ml 1.6) (source/store.mli 2891 1046074449 b/26_rnumsolver 1.16) (source/prevar.ml 981 1037192189 d/18_prevar.ml 1.1) -(test/time-ecrins.exp 6496 1046074449 d/21_time-ecrin 1.9) +(test/time-ecrins.exp 8320 1046682069 d/21_time-ecrin 1.10) (source/value.mli 1101 1033723811 c/24_value.mli 1.1) (user-rules.skel 1167 1040226023 c/25_user-rules 1.2) (source/Makefile.gen_stubs 212 1036048863 b/42_Makefile.g 1.5) (test/heater_float.rif.exp 1116 1045834161 b/30_heater_flo 1.12) -(test/temp_int.luc 700 1045841411 b/50_temp_int.e 1.4) -(source/luc_exe.ml 12758 1046074449 b/32_ima_exe.ml 1.26) +(test/temp_int.luc 698 1046682069 b/50_temp_int.e 1.5) +(source/luc_exe.ml 13432 1046682069 b/32_ima_exe.ml 1.27) (source/prevar.mli 623 1037192189 d/19_prevar.mli 1.1) (source/graph.ml 2339 1037625990 14_graph.ml 1.8) (ihm/xlurette/makefile 1601 1040226023 c/16_makefile 1.7) -(test/usager.luc 510 1045841411 b/14_usager.env 1.10) +(test/usager.luc 508 1046682069 b/14_usager.env 1.11) (mlcuddidl/manager.ml 8017 1034006019 c/47_manager.ml 1.1) (cuddaux/cuddauxInt.h 2058 1034006019 c/28_cuddauxInt 1.1) (cuddaux/cuddauxTDGenCof.c 15712 1034006019 c/26_cuddauxTDG 1.1) @@ -42,33 +42,34 @@ (source/env.ml 8013 1027349504 16_env.ml 1.29) (demo/chaudiere/buggy_chaudiere_ctrl.lus 219 1031732392 c/10_buggy_chau 1.1) (source/Makefile.show_luc 1026 1037192189 b/40_Makefile.s 1.8) -(source/env_state.mli 6791 1046074449 50_env_state. 1.27) +(test/losange.luc 444 1046682069 d/27_losange.lu 1.1) +(source/env_state.mli 6937 1046682069 50_env_state. 1.28) (mlcuddidl/idd.ml 7061 1034006019 d/0_idd.ml 1.1) -(test/time-ossau.exp 6497 1046074449 b/48_time.exp 1.32) +(test/time-ossau.exp 8312 1046682069 b/48_time.exp 1.33) (source/print.mli 1136 1045558187 46_print.mli 1.13) (mlcuddidl/rdd.mli 7174 1034006019 c/40_rdd.mli 1.1) (test/Makefile 32 1035531408 c/0_Makefile 1.8) -(source/parse_env.ml 33544 1045849760 41_parse_env. 1.38) +(source/parse_env.ml 36957 1046682069 41_parse_env. 1.39) (ihm/xlurette/xlurette_glade_main.ml 23620 1046074449 c/12_xlurette_g 1.16) (demo/chaudiere/chaudiere_oracle.lus 107 1031732392 c/8_chaudiere_ 1.1) -(source/solver.ml 29799 1046074449 39_solver.ml 1.44) +(source/solver.ml 30947 1046682069 39_solver.ml 1.45) (source/pnumsolver.ml 9273 1045489850 d/23_pnumsolver 1.2) (test/ControleurPorte.lus 3219 1032940601 c/17_Controleur 1.1) (source/gen_fake_lutin.ml 3449 1036048863 d/16_gen_fake_l 1.1) (source/lurette.ml 14452 1046074449 12_lurette.ml 1.63) -(TODO 5368 1045849760 d/22_TODO 1.6) +(TODO 5509 1046682069 d/22_TODO 1.7) (source/Makefile 1627 1044958837 c/20_Makefile 1.10) (source/util.ml 21073 1045849760 35_util.ml 1.40) (mlcuddidl/manager.mli 7912 1034006019 c/46_manager.ml 1.1) (doc/Interface_draft 5232 1003928781 19_Interface_ 1.1) (source/sim2chro.mli 1524 1037625990 b/23_sim2chro.m 1.6) -(source/command_line_luc_exe.mli 1095 1046074449 b/34_command_li 1.8) +(source/command_line_luc_exe.mli 1130 1046682069 b/34_command_li 1.9) (test/giro/onlyroll.lus 18298 1031732392 c/7_onlyroll.l 1.1) (source/Makefile.lucky 2562 1045834161 b/41_Makefile.i 1.14) (TAGS 9825 1007379917 21_TAGS 1.6) (mlcuddidl/rdd.ml 8746 1034006019 c/41_rdd.ml 1.1) (source/Makefile.lurette_lib 2023 1045834161 c/2_Makefile.l 1.14) -(source/parse_env.mli 1130 1045841411 40_parse_env. 1.12) +(source/parse_env.mli 1186 1046682069 40_parse_env. 1.13) (source/gen_stubs.ml 27065 1036048863 24_generate_l 1.41) (OcamlMakefile 22765 1045558187 17_OcamlMakef 1.47) (source/polyhedron.ml 7493 1045834161 d/25_polyhedron 1.3) @@ -79,7 +80,7 @@ (test/porte.luc 994 1045841411 b/16_porte.env 1.9) (make_lurette 1306 1034006019 27_make_luret 1.17) (source/control.ml 4445 1036675177 c/4_control.ml 1.4) -(ihm/xlurette/xlurette_glade_interface.ml 32774 1046074449 c/15_xlurette_g 1.9) +(ihm/xlurette/xlurette_glade_interface.ml 32810 1046682069 c/15_xlurette_g 1.10) (source/lurettetop.ml 31026 1046074449 c/1_lurettetop 1.26) (mlcuddidl/README 1574 1034006019 d/8_README 1.1) (cuddaux/README 1427 1034006019 c/34_README 1.1) @@ -87,17 +88,17 @@ (source/ne.mli 2116 1045834161 c/22_ne.mli 1.5) (README 2266 1037625990 10_README 1.5) (test/vrai_tram.lus 564 1027066799 b/6_vrai_tram. 1.2) -(source/env_state.ml 21351 1046074449 51_env_state. 1.39) +(source/env_state.ml 22475 1046682069 51_env_state. 1.40) (mlcuddidl/manager_caml.c 39233 1034006019 c/45_manager_ca 1.1) (mlcuddidl/mtbdd.mli 4395 1034006019 c/43_mtbdd.mli 1.1) (source/env.mli 2026 1040290175 15_env.mli 1.17) (mlcuddidl/rdd_caml.c 41613 1034006019 c/39_rdd_caml.c 1.1) (Makefile.common.in 528 1034951022 d/12_Makefile.c 1.2) -(user-rules 15733 1045849760 c/14_myrules 1.25) +(user-rules 16167 1046682069 c/14_myrules 1.26) (doc/archi.fig 3693 1003928781 20_archi.fig 1.1) (source/lurette.mli 448 1016027474 11_lurette.ml 1.12) (source/store.ml 30658 1046074449 b/27_rnumsolver 1.23) -(source/gne.mli 1552 1033397911 b/36_gne.mli 1.4) +(source/gne.mli 1557 1046682069 b/36_gne.mli 1.5) (test/giro/giro.luc 2755 1033738731 c/6_giro.ima 1.4) (source/show_env.mli 1091 1033738731 42_show_env.m 1.8) (Makefile.lurette 574 1044958837 b/38_Makefile.l 1.16) @@ -117,39 +118,40 @@ (source/pnumsolver.mli 2322 1045489850 d/24_pnumsolver 1.2) (cuddaux/Changes 42 1034006019 c/36_Changes 1.1) (test/vrai_tram.h 2468 1027066799 b/7_vrai_tram. 1.3) -(test/tram.luc 1094 1045841411 b/15_tram.env 1.9) +(test/tram.luc 1092 1046682069 b/15_tram.env 1.10) (source/eval.mli 1395 1027066799 48_eval.mli 1.10) (mlcuddidl/mtbdd.ml 10185 1034006019 c/44_mtbdd.ml 1.1) (demo/chaudiere/chaudiere_ctrl.lus 177 1031732392 c/9_chaudiere_ 1.1) (source/control.mli 3208 1036675177 c/3_control.ml 1.3) -(source/formula.ml 5910 1045849760 45_formula.ml 1.27) +(source/formula.ml 5962 1046682069 45_formula.ml 1.28) (cuddaux/Makefile 3091 1034006019 c/35_Makefile 1.1) (test/test_gen_stubs.h 1818 1020068208 b/45_test_gen_s 1.1) (doc/ocamldoc.hva 313 1008328137 b/13_ocamldoc.h 1.1) (mlcuddidl/idd.idl 10595 1034006019 d/1_idd.idl 1.1) -(source/gne.ml 2767 1033397911 b/37_gne.ml 1.4) +(source/gne.ml 2774 1046682069 b/37_gne.ml 1.5) (cuddaux/cuddaux.h 2381 1034006019 c/33_cuddaux.h 1.1) (mlcuddidl/macros.m4 11290 1034006019 c/49_macros.m4 1.1) (test/ControleurPorte.c 9407 1012914629 b/19_Controleur 1.1) (source/Makefile.gen_fake_lutin 248 1036048863 d/17_Makefile.g 1.1) (mlcuddidl/bdd.mli 8573 1034006019 d/5_bdd.mli 1.1) (doc/automata_format 0 1007379917 b/3_automata_f 1.1) -(source/solver.mli 1003 1027092697 38_solver.mli 1.13) +(source/solver.mli 1003 1046682069 38_solver.mli 1.14) (mlcuddidl/cudd_caml.c 22890 1034006019 d/3_cudd_caml. 1.1) (source/print.ml 5787 1045558187 47_print.ml 1.22) (test/ControleurPorte.h 2306 1012914629 b/18_Controleur 1.1) (configure.in 5208 1034351455 d/11_configure. 1.1) (cuddaux/cuddauxBridge.c 6099 1034006019 c/31_cuddauxBri 1.1) (source/show_env.ml 3642 1037192189 43_show_env.m 1.16) +(test/losange-3d.luc 561 1046682069 d/28_losange-3d 1.1) (mlcuddidl/Changes 64 1034006019 d/10_Changes 1.1) (source/parse_poc.ml 7093 1036048863 d/15_parse_poc. 1.1) (cuddaux/cuddauxAddIte.c 12812 1034006019 c/32_cuddauxAdd 1.1) -(source/sim2chro.ml 2721 1033397911 b/24_sim2chro.m 1.14) -(source/command_line_luc_exe.ml 3255 1046074449 b/33_command_li 1.11) +(source/sim2chro.ml 2742 1046682069 b/24_sim2chro.m 1.15) +(source/command_line_luc_exe.ml 3360 1046682069 b/33_command_li 1.12) (mlcuddidl/cudd_caml.h 1210 1034006019 d/2_cudd_caml. 1.1) (source/value.ml 2361 1045849760 c/23_value.ml 1.3) (test/giro/allocator.lus 1087 1031732392 c/5_allocator. 1.1) -(test/time-ecrins.res 6496 1046074449 d/20_time-ecrin 1.9) +(test/time-ecrins.res 8320 1046682069 d/20_time-ecrin 1.10) (lurette.depfull.dot 49 1007651448 b/5_lurette.de 1.2) (mlcuddidl/idd.mli 5470 1034006019 c/51_idd.mli 1.1) (ID_EN_VRAC 2184 1002196285 0_ID_EN_VRAC 1.1) diff --git a/TODO b/TODO index f89b721c6e1f8ab159d0a9aa9de4a69dd7058724..3516905b1180156f65eef18759cf27342cc2277c 100644 --- a/TODO +++ b/TODO @@ -5,6 +5,9 @@ *********** A faire maintenant +* Messages d'erreurs par terribles dans le parseur quand : + - il manque une virgule + - il y a une erreur dans l'un des mots clefs de champs * Traiter les variables stables (signaux purs) @@ -43,7 +46,7 @@ peut-etre chercher a remettre en cause les choix qui ont été faits lors des egalités (ie, le choix de la variable à substituer). Ce calcul coute peut-etre un peu cher (car, comment faire autrement qu'essayer - toutes les possxibilités), mais au moins, ca donnerais une solution + toutes les possibilités), mais au moins, ca donnerais une solution dans des cas ou les polyedres peteraient... diff --git a/ihm/xlurette/xlurette_glade_interface.ml b/ihm/xlurette/xlurette_glade_interface.ml index e3d13e89219789d4621c88e0eb14c3bdec0a392c..1a6b71397254e96138b3b856fa99aef1e4ecce96 100644 --- a/ihm/xlurette/xlurette_glade_interface.ml +++ b/ihm/xlurette/xlurette_glade_interface.ml @@ -881,7 +881,7 @@ let radiobutton_edges = GButton.radio_button () in let _ = GtkBase.Widget.set_can_focus radiobutton_edges#as_widget true in -let _ = tooltips#set_tip ~text:"Draw among the edges of the polyhedra of solutions" radiobutton_edges#coerce in +let _ = tooltips#set_tip ~text:"Draw inside the convex hull of solutions, but a little bit more often among the edges " radiobutton_edges#coerce in let radiobutton_vertices = GButton.radio_button ~group:radiobutton_inside#group ~packing:(hbox3#pack ~padding:0 diff --git a/lurette.prj b/lurette.prj index 6a352328b72ea9cf33a18f2240269395ae7feca9..bd959fafafcf8dc83dafd0e595fd687c127d19fb 100644 --- a/lurette.prj +++ b/lurette.prj @@ -1,24 +1,37 @@ ;; -*- Prcs -*- (Created-By-Prcs-Version 1 3 3) (Project-Description "Lurette") -(Project-Version lurette 0 127) -(Parent-Version lurette 0 126) +(Project-Version lurette 0 128) +(Parent-Version lurette 0 127) (Version-Log " -source/command_line_luc_exe.ml: -source/command_line_luc_exe.mli: -source/luc_exe.ml: -source/store.ml: -source/lurette.ml: -source/lurettetop.ml: - Put back the verteces draw. It was not such a great idea to remove - after all... +source/parse_env.ml: +source/env_state.ml: +source/env_state.mli: + Add support for transient /recurrent nodes (not plugged yet). + +source/parse_env.ml: +source/solver.ml: +source/formula.ml +source/formula.mli: +test/*.luc: + Add the possibity to define formula and num expr aliases + (a request from Bertrand). + +test/losange.luc: [new file] +test/losange-3d.luc: [new file] +test/test_losange.lus: [new file] +user-rules: + Add the losange in the non-regression test + - Also change verteces into vertices (oops...). +source/luc_exe.ml: +source/command_line_luc_exe.ml: + Add an option that lets one see local vars in lucky output. ") (New-Version-Log "" ) -(Checkin-Time "Mon, 24 Feb 2003 09:14:09 +0100") +(Checkin-Time "Mon, 03 Mar 2003 10:01:09 +0100") (Checkin-Login jahier) (Populate-Ignore ()) (Project-Keywords) @@ -30,10 +43,10 @@ source/lurettetop.ml: ;; Sources files for luc_exe (source/luc_exe.mli (lurette/b/31_ima_exe.ml 1.2 644)) - (source/luc_exe.ml (lurette/b/32_ima_exe.ml 1.26 644)) + (source/luc_exe.ml (lurette/b/32_ima_exe.ml 1.27 644)) - (source/command_line_luc_exe.ml (lurette/b/33_command_li 1.11 644)) - (source/command_line_luc_exe.mli (lurette/b/34_command_li 1.8 644)) + (source/command_line_luc_exe.ml (lurette/b/33_command_li 1.12 644)) + (source/command_line_luc_exe.mli (lurette/b/34_command_li 1.9 644)) ;; Sources files for lurette only (source/lurette.mli (lurette/11_lurette.ml 1.12 644)) @@ -51,8 +64,8 @@ source/lurettetop.ml: (source/util.ml (lurette/35_util.ml 1.40 444)) - (source/solver.mli (lurette/38_solver.mli 1.13 644)) - (source/solver.ml (lurette/39_solver.ml 1.44 644)) + (source/solver.mli (lurette/38_solver.mli 1.14 644)) + (source/solver.ml (lurette/39_solver.ml 1.45 644)) (source/polyhedron.ml (lurette/d/25_polyhedron 1.3 644)) (source/polyhedron.mli (lurette/d/26_polyhedron 1.1 644)) @@ -63,14 +76,14 @@ source/lurettetop.ml: (source/pnumsolver.ml (lurette/d/23_pnumsolver 1.2 644)) (source/pnumsolver.mli (lurette/d/24_pnumsolver 1.2 644)) - (source/parse_env.mli (lurette/40_parse_env. 1.12 644)) - (source/parse_env.ml (lurette/41_parse_env. 1.38 644)) + (source/parse_env.mli (lurette/40_parse_env. 1.13 644)) + (source/parse_env.ml (lurette/41_parse_env. 1.39 644)) (source/show_env.mli (lurette/42_show_env.m 1.8 644)) (source/show_env.ml (lurette/43_show_env.m 1.16 644)) - (source/formula.mli (lurette/44_formula.ml 1.21 644)) - (source/formula.ml (lurette/45_formula.ml 1.27 644)) + (source/formula.mli (lurette/44_formula.ml 1.22 644)) + (source/formula.ml (lurette/45_formula.ml 1.28 644)) (source/print.mli (lurette/46_print.mli 1.13 644)) (source/print.ml (lurette/47_print.ml 1.22 644)) @@ -78,17 +91,17 @@ source/lurettetop.ml: (source/eval.mli (lurette/48_eval.mli 1.10 644)) (source/eval.ml (lurette/49_eval.ml 1.13 644)) - (source/env_state.mli (lurette/50_env_state. 1.27 644)) - (source/env_state.ml (lurette/51_env_state. 1.39 644)) + (source/env_state.mli (lurette/50_env_state. 1.28 644)) + (source/env_state.ml (lurette/51_env_state. 1.40 644)) (source/automata.mli (lurette/b/46_automata.m 1.3 644)) - (source/automata.ml (lurette/b/47_automata.m 1.6 644)) + (source/automata.ml (lurette/b/47_automata.m 1.7 644)) (source/sim2chro.mli (lurette/b/23_sim2chro.m 1.6 644)) - (source/sim2chro.ml (lurette/b/24_sim2chro.m 1.14 644)) + (source/sim2chro.ml (lurette/b/24_sim2chro.m 1.15 644)) - (source/gne.mli (lurette/b/36_gne.mli 1.4 644)) - (source/gne.ml (lurette/b/37_gne.ml 1.4 644)) + (source/gne.mli (lurette/b/36_gne.mli 1.5 644)) + (source/gne.ml (lurette/b/37_gne.ml 1.5 644)) (source/lurettetop.ml (lurette/c/1_lurettetop 1.26 644)) (source/gen_stubs.ml (lurette/24_generate_l 1.41 644)) @@ -99,7 +112,7 @@ source/lurettetop.ml: (source/constraint.mli (lurette/c/18_constraint 1.5 644)) (source/constraint.ml (lurette/c/19_constraint 1.6 644)) - (source/ne.ml (lurette/c/21_ne.ml 1.5 644)) + (source/ne.ml (lurette/c/21_ne.ml 1.6 644)) (source/ne.mli (lurette/c/22_ne.mli 1.5 644)) (source/value.ml (lurette/c/23_value.ml 1.3 644)) @@ -119,7 +132,7 @@ source/lurettetop.ml: (Makefile.common.in (lurette/d/12_Makefile.c 1.2 644)) (OcamlMakefile (lurette/17_OcamlMakef 1.47 644)) (Makefile.lurette (lurette/b/38_Makefile.l 1.16 644)) - (user-rules (lurette/c/14_myrules 1.25 644)) + (user-rules (lurette/c/14_myrules 1.26 644)) (user-rules.skel (lurette/c/25_user-rules 1.2 644)) (Makefile (lurette/d/13_Makefile 1.1 644)) @@ -146,18 +159,18 @@ source/lurettetop.ml: (lurette.depfull.dot (lurette/b/5_lurette.de 1.2 644)) (TAGS (lurette/21_TAGS 1.6 644)) - (test/time-ossau.exp (lurette/b/48_time.exp 1.32 644)) - (test/time-ossau.res (lurette/b/49_time.res 1.35 644)) - (test/time-ecrins.res (lurette/d/20_time-ecrin 1.9 644)) - (test/time-ecrins.exp (lurette/d/21_time-ecrin 1.9 644)) + (test/time-ossau.exp (lurette/b/48_time.exp 1.33 644)) + (test/time-ossau.res (lurette/b/49_time.res 1.36 644)) + (test/time-ecrins.res (lurette/d/20_time-ecrin 1.10 644)) + (test/time-ecrins.exp (lurette/d/21_time-ecrin 1.10 644)) ;; Various files used for testing purposes - (test/usager.luc (lurette/b/14_usager.env 1.10 644)) - (test/tram.luc (lurette/b/15_tram.env 1.9 644)) + (test/usager.luc (lurette/b/14_usager.env 1.11 644)) + (test/tram.luc (lurette/b/15_tram.env 1.10 644)) (test/porte.luc (lurette/b/16_porte.env 1.9 644)) - (test/passerelle.luc (lurette/b/17_passerelle 1.9 644)) - (test/temp_int.luc (lurette/b/50_temp_int.e 1.4 644)) - (test/temp_float.luc (lurette/b/51_temp_float 1.5 644)) + (test/passerelle.luc (lurette/b/17_passerelle 1.10 644)) + (test/temp_int.luc (lurette/b/50_temp_int.e 1.5 644)) + (test/temp_float.luc (lurette/b/51_temp_float 1.6 644)) (test/ControleurPorte.h (lurette/b/18_Controleur 1.1 644)) (test/ControleurPorte.c (lurette/b/19_Controleur 1.1 644)) @@ -189,7 +202,7 @@ source/lurettetop.ml: ;; xlurette (ihm/xlurette/xlurette_glade_main.ml (lurette/c/12_xlurette_g 1.16 644)) (ihm/xlurette/xlurette.glade (lurette/c/13_xlurette.g 1.10 644)) - (ihm/xlurette/xlurette_glade_interface.ml (lurette/c/15_xlurette_g 1.9 644)) + (ihm/xlurette/xlurette_glade_interface.ml (lurette/c/15_xlurette_g 1.10 644)) (ihm/xlurette/makefile (lurette/c/16_makefile 1.7 644)) @@ -236,8 +249,18 @@ source/lurettetop.ml: (mlcuddidl/Changes (lurette/d/10_Changes 1.1 644)) - (TODO (lurette/d/22_TODO 1.6 644)) + (TODO (lurette/d/22_TODO 1.7 644)) + + +;; Files added by populate at Tue, 25 Feb 2003 11:30:11 +0100, +;; to version 0.127(w), by jahier: + + (test/losange.luc (lurette/d/27_losange.lu 1.1 644)) + +;; Files added by populate at Tue, 25 Feb 2003 11:34:13 +0100, +;; to version 0.127(w), by jahier: + (test/losange-3d.luc (lurette/d/28_losange-3d 1.1 644)) ) (Merge-Parents) (New-Merge-Parents) diff --git a/source/automata.ml b/source/automata.ml index c993ecae89a7586ad161e228f4d682fc6400053a..4ec93fea73bebc0422215b20e7c20a114ee6e44a 100644 --- a/source/automata.ml +++ b/source/automata.ml @@ -1,5 +1,5 @@ (*----------------------------------------------------------------------- -** Copyright (C) 2001, 2002 - Verimag. +** Copyright (C) 2001 - 2003 - Verimag. ** This file may only be copied under the terms of the GNU Library General ** Public License **----------------------------------------------------------------------- @@ -36,7 +36,7 @@ type arc_info_static = int * formula_eps * Control.state option let (arc_info_static_to_string : arc_info_static -> string) = fun (w, formula_eps, pcl) -> let pc_str = - " XXX " + " XXX arc_info_static_to_string " (* fold_left (fun acc str -> (acc^":"^str)) "" pcl *) in ( (string_of_int w) ^ " " ^ @@ -423,6 +423,18 @@ let (get : node list list -> t list) = (****************************************************************************) + +let (is_node_set_transient: IntSet.t -> bool) = + fun ns -> + (* A set of nodes is transient if one of the nodes in set is transient *) + (IntSet.fold + (fun e acc -> + acc || (Env_state.is_node_transient e) + ) + ns + false + ) + let rec (choose_a_formula: t -> node list * formula * Control.state) = fun (node, trans) -> (** Draws a formula in an automata (according to node weights); @@ -448,9 +460,9 @@ let rec (choose_a_formula: t -> node list * formula * Control.state) = | Eps, Some _ -> assert false else let w_sum = List.fold_left (fun acc (_,(w,_,_)) -> acc+w) 0 nt_arc_l in - let j = - try Random.int (w_sum + 1) - with _ -> + let j = + try Random.int (w_sum + 1) + with _ -> Control.print_state (Env_state.ctrl_state ()); (List.iter (fun (nt,(w,f,st_opt)) -> @@ -479,6 +491,89 @@ let rec (choose_a_formula: t -> node list * formula * Control.state) = | (nt, (w,Form(ff), Some st)) -> (IntSet.elements nt, ff, st) | (nt, (w,Form(_), None)) -> assert false | (nt, (w,Eps, Some _)) -> assert false + + +(* XXX Version with transient/recurrent nodes *) +(* let rec (choose_a_formula: formula -> t -> node list * formula * Control.state) = *) +(* fun f_acc (node, trans) -> *) +(* (** Draws a formula in an automata (according to node weights); *) +(* also returns the list of their corresponding target nodes, and *) +(* control expression. *) *) +(* let nt_arc_l0 = Graph.get_list_of_target_nodes trans node in *) +(* let (nt_arc_l, null_weigth_trans) = *) +(* List.partition (fun (_, (w,_,_)) -> w <> 0) nt_arc_l0 *) +(* in *) +(* if *) +(* (List.length nt_arc_l) = 0 *) +(* then *) +(* (* If all transitions have a weigth of 0, then we perform a *) +(* fair toss among them. *) *) +(* let s2 = List.length null_weigth_trans in *) +(* if s2 = 0 then raise Not_found *) +(* else *) +(* let (nt, (_,f,ce)) = List.nth null_weigth_trans (Random.int s2) in *) +(* match f,ce with *) +(* Form(ff), Some st -> *) +(* let new_f = And(f_acc, ff) in *) +(* if *) +(* Solver.is_satisfiable (Env_state.input ()) new_f *) +(* then *) +(* if *) +(* is_node_set_transient nt *) +(* then *) +(* choose_a_formula new_f (nt, trans) *) +(* else *) +(* (IntSet.elements nt, new_f, st) *) +(* else *) +(* raise Not_found *) +(* | Eps, None -> choose_a_formula f_acc (nt, trans) *) +(* | Form(_), None -> assert false *) +(* | Eps, Some _ -> assert false *) +(* else *) +(* let w_sum = List.fold_left (fun acc (_,(w,_,_)) -> acc+w) 0 nt_arc_l in *) +(* let j = *) +(* try Random.int (w_sum + 1) *) +(* with _ -> *) +(* Control.print_state (Env_state.ctrl_state ()); *) +(* (List.iter *) +(* (fun (nt,(w,f,st_opt)) -> *) +(* output_string stderr ("\n" ^ (string_of_int w) ); *) +(* match st_opt with *) +(* None -> output_string stderr "None" *) +(* | Some st -> Control.print_state st *) +(* ) *) +(* nt_arc_l ); *) +(* assert false *) +(* in *) +(* let rec get_jth_trans j list = *) +(* match list with *) +(* [] -> assert false *) +(* | (nt, (w,f,ce))::tail -> *) +(* let newj = j - w in *) +(* if *) +(* (newj < 1) *) +(* then *) +(* (nt, (w,f,ce)) *) +(* else *) +(* get_jth_trans newj tail *) +(* in *) +(* match get_jth_trans j nt_arc_l with *) +(* (nt, (w,Eps,None)) -> choose_a_formula f_acc (nt, trans) *) +(* | (nt, (w,Form(ff), Some st)) -> *) +(* let new_f = And(f_acc, ff) in *) +(* if *) +(* Solver.is_satisfiable (Env_state.input ()) new_f *) +(* then *) +(* if *) +(* is_node_set_transient nt *) +(* then *) +(* choose_a_formula new_f (nt, trans) *) +(* else *) +(* (IntSet.elements nt, new_f, st) *) +(* else *) +(* raise Not_found *) +(* | (nt, (w,Form(_), None)) -> assert false *) +(* | (nt, (w,Eps, Some _)) -> assert false *) type accT = (node list * formula * Control.state) list @@ -492,6 +587,7 @@ let rec (choose_n_formula_acc: int -> t -> accT -> accT) = else try let (ntl, f, st) = choose_a_formula a in +(* let (ntl, f, st) = choose_a_formula True a in *) choose_n_formula_acc (n-1) a ((ntl, f, st)::nt_f_st_l0) with Not_found -> let nodes_str = intset_to_string (fst a) in diff --git a/source/command_line_luc_exe.ml b/source/command_line_luc_exe.ml index 2954d452efc3f0b9e648dcf47ec40217bcb250e6..b88c564cf899f95ed165aa17df5464226d587238 100644 --- a/source/command_line_luc_exe.ml +++ b/source/command_line_luc_exe.ml @@ -12,11 +12,12 @@ type optionsT = { mutable show_automata : bool ; mutable boot : bool ; + mutable locals : bool ; mutable user_seed : int } type cmd_line_optionT = - Seed | Inside | Edges | Vertices | Precision | Boot | ShowAut | NoShowAut | Verbose + Seed | Inside | Edges | Vertices | Precision | Boot | ShowAut | NoShowAut | Verbose | Locals (* Names of the command line options to override the defaults. *) let (string_to_option: (string * cmd_line_optionT) list) = [ @@ -38,6 +39,8 @@ let (string_to_option: (string * cmd_line_optionT) list) = [ ("--no-show-aut", NoShowAut); + ("--locals", Locals); + ("--verbose", Verbose); ("-v", Verbose) ] @@ -53,6 +56,7 @@ let (option_to_usage: cmd_line_optionT -> string) = | Edges -> "Draw inside the convex hull of solutions, but a little bit more at edges and vertices.\n " | Vertices -> "Draw among the vertices of the convex hull of solutions.\n " | Seed -> "Set the value of the seed the random engine is initialized with (0 lets the system draw a seed).\n" + | Locals -> "Shows local variables.\n" | Verbose -> "Set on a verbose mode.\n" let (group_common_options: (string * cmd_line_optionT) list -> diff --git a/source/command_line_luc_exe.mli b/source/command_line_luc_exe.mli index 0d6b02e7e6eec7f57069da109393ddbddc09b23b..9b38c91dfaf779b1c6000f7894a58403b710c173 100644 --- a/source/command_line_luc_exe.mli +++ b/source/command_line_luc_exe.mli @@ -15,6 +15,7 @@ type optionsT = { mutable show_automata : bool ; mutable boot : bool ; + mutable locals : bool ; mutable user_seed : int } @@ -28,7 +29,7 @@ val cmd_line_string_to_int : string -> string -> int *) type cmd_line_optionT = - Seed | Inside | Edges | Vertices | Precision | Boot | ShowAut | NoShowAut | Verbose + Seed | Inside | Edges | Vertices | Precision | Boot | ShowAut | NoShowAut | Verbose | Locals val string_to_option: (string * cmd_line_optionT) list diff --git a/source/env_state.ml b/source/env_state.ml index c861f08861942d3f70ba8c6519f9541d52f8a815..8d7d700843fca217135e50b3b52fa13a4c65a832 100644 --- a/source/env_state.ml +++ b/source/env_state.ml @@ -46,6 +46,9 @@ type env_stateT = { we need to be able to know what variables are still to be drawn. *) + alias_to_formula_or_expr : (string, formula_or_expr) Hashtbl.t; + (** Associates a formula or a numexpr to a label *) + linear_constraint_to_index: ((Constraint.t, int) Hashtbl.t); (** This indexing of (output and local) variable names is used for constructing bdds in the boolean solver (for which variables @@ -87,6 +90,9 @@ type env_stateT = { (** List of the automata current nodes (there are as many nodes as there are environment run in parallel). *) + mutable transient_nodes : node list; + (** List of transient nodes *) + mutable graph : (node, arc_info) Graph.t ; (** The automata transitions are stored in a Graph.t *) @@ -128,6 +134,7 @@ let (env_state:env_stateT) = { output = []; local = []; current_nodes = []; + transient_nodes = []; snt = Hashtbl.create 3; ce_label = Hashtbl.create 0 ; ctrl_state = Control.new_state (); @@ -135,6 +142,7 @@ let (env_state:env_stateT) = { verbose = false; bdd_tbl = Hashtbl.create 0; bdd_tbl_global = Hashtbl.create 0; + alias_to_formula_or_expr= Hashtbl.create 0 ; linear_constraint_to_index = Hashtbl.create 0; index_to_linear_constraint = Hashtbl.create 0; global_linear_constraint_to_index = Hashtbl.create 0; @@ -299,6 +307,14 @@ let (set_current_nodes: node list list -> unit) = fun nll -> env_state.current_nodes <- nll +(****************************************************************************) +let (is_node_transient : node -> bool) = + fun n -> + List.mem n env_state.transient_nodes +let (set_transient_nodes: node list -> unit) = + fun nl -> + env_state.transient_nodes <- nl + (****************************************************************************) let (sol_number : Bdd.t -> Util.sol_nb * Util.sol_nb) = fun bdd -> @@ -421,6 +437,14 @@ let (clear_global_linear_constraint_index : unit -> unit) = env_state.free_index_list <- [] +(****************************************************************************) +(* exported *) +let (alias_to_formula_or_expr : string -> formula_or_expr option) = + fun label -> + try + Some (Hashtbl.find env_state.alias_to_formula_or_expr label) + with Not_found -> None + (****************************************************************************) let (output_var_names: unit -> vnt list) = @@ -490,7 +514,8 @@ let (read_env_state_one_file : string -> node) = let (* Parses the content of [file]. *) Parse_env.Automata(init_node, list_in, list_out, list_loc, - list_pre, list_ce, list_form_def, list_arcs) = + list_pre, list_ce, trans_nodes_list, + adl, list_arcs) = try let ic = open_in file in @@ -500,15 +525,16 @@ let (read_env_state_one_file : string -> node) = close_in ic; aut with e -> - print_string - ("\nA parsing error occurred in file " ^ file ^ "\n"); - flush stdout; - close_in ic; - exit 2 + print_string ((Printexc.to_string e) ^ "\n"); + print_string + ("\nA parsing error occurred in file " ^ file ^ "\n"); + flush stdout; + close_in ic; + exit 2 in let (list_pre_vn0, _) = List.split list_pre in let list_pre_vn = add_missing_pre list_pre_vn0 in - + (* Sets the [graph] field of [env_state]. *) let node_nb = (List.length (Graph.get_all_nodes (graph ()))) in let (add_arc: Parse_env.read_arc -> unit) = @@ -521,6 +547,16 @@ let (read_env_state_one_file : string -> node) = arc_info (node_to+node_nb)); in + + (* Set the transient_nodes field of [env_state]. *) + set_transient_nodes trans_nodes_list; + + (* Set the formula and expr alias tables *) + List.iter + (fun (label, f) -> + Hashtbl.add env_state.alias_to_formula_or_expr label f) + adl; + List.iter (fun (id, ce) -> if diff --git a/source/env_state.mli b/source/env_state.mli index c5753222a19c7af617bc1d1ba281a414686664a9..5896498e850f613f427c36c34493cf8eb4266f12 100644 --- a/source/env_state.mli +++ b/source/env_state.mli @@ -199,3 +199,8 @@ val dump_env_state_stat : out_channel -> unit val set_verbose: bool -> unit val verbose: unit -> bool + +val set_transient_nodes: node list -> unit +val is_node_transient : node -> bool + +val alias_to_formula_or_expr : string -> formula_or_expr option diff --git a/source/formula.ml b/source/formula.ml index b863417866aaa579cee9dc99f1418b323e1d7a7e..f089d225ce861ea2701cfe6b204f9d2010cdd3a3 100644 --- a/source/formula.ml +++ b/source/formula.ml @@ -43,10 +43,13 @@ and | Inf of expr * expr (* < *) | InfEq of expr * expr (* <= *) + type formula_eps = | Eps | Form of formula +type formula_or_expr = Fo of formula | Ex of expr + (****************************************************************************) type node = int diff --git a/source/formula.mli b/source/formula.mli index 6608fc9a4296843abbaafb3d769a198ce31fc4c9..13dc0e638716f4b9431c9cf80a186f11ceae7bed 100644 --- a/source/formula.mli +++ b/source/formula.mli @@ -49,6 +49,8 @@ type formula_eps = | Eps | Form of formula +type formula_or_expr = Fo of formula | Ex of expr + (****************************************************************************) type node = int diff --git a/source/gne.ml b/source/gne.ml index ff7e6b785aa3b211ca16f1a3edd322206f3e7863..5912aafe8501d317c1cc726e6b249821edc5ad85 100644 --- a/source/gne.ml +++ b/source/gne.ml @@ -105,7 +105,7 @@ let (to_string : t -> string) = fun gne -> (NeMap.fold (fun ne (bdd, dep) acc -> - ((Ne.to_string ne) ^ " -> << a bdd >> ; " ^ acc )) + ("\n\t" ^ (Ne.to_string ne) ^ " -> << a bdd >> ;" ^ acc )) gne "\n" ) diff --git a/source/gne.mli b/source/gne.mli index 7f9667dd5a402a45fb2c3c65c421a582d941582e..4822b800bc96e3c483a288060eb840b48b81449b 100644 --- a/source/gne.mli +++ b/source/gne.mli @@ -10,7 +10,7 @@ (** Garded normal expressions. -It is Ne.t expressions garded by formula (Bdd.t actually). The +They are Ne.t expressions garded by formula (a Bdd.t actually). The interpretation of [(e1 -> bdd1 ; ... ; en -> bddn)] is that it is equal to [ei] iff [bddi] is true. By construction, the set [{bddi, i=1,n}] ougth to be a partition (namely, exactly one bdd among the @@ -36,7 +36,7 @@ val empty : unit -> t by [(bdd, b)]. *) val make : Ne.t -> Bdd.t -> bool -> t -(** [fold f gne] apllies [f] to every expr in [gne]. *) +(** [fold f gne] applies [f] to every expr in [gne]. *) val fold : (Ne.t -> Bdd.t * bool -> 'acc -> 'acc) -> t -> 'acc -> 'acc (** [find ne gne] returns the guard of [ne] in [gne], and raises diff --git a/source/luc_exe.ml b/source/luc_exe.ml index 720ab164bfed99220d32d3434d1c7095028bd5cd..36457f2b98349e8174c1b16ac116e3eb74152c67 100644 --- a/source/luc_exe.ml +++ b/source/luc_exe.ml @@ -23,6 +23,7 @@ open Command_line_luc_exe let (options:Command_line_luc_exe.optionsT) = { show_automata = false ; user_seed = 0 ; + locals = false ; boot = false } @@ -218,11 +219,14 @@ and (ignore_toks_until_end_of_pragmas : vnt list -> rif_stream -> env_in -let (write_rif_output : vnt list -> env_out -> unit) = +let (write_rif : vnt list -> subst list -> unit) = fun vntl output -> - let ae_l = List.map (fun (vn, _) -> List.assoc vn output) vntl in - List.iter (Value.print stdout) ae_l - + List.iter + (fun (vn, _) -> + let _ = assert List.mem_assoc vn output in + Value.print stdout (List.assoc vn output) + ) + vntl (*------------------------------------------------------------------------*) @@ -255,6 +259,7 @@ and | NoShowAut -> options.show_automata <- false ; (n+1) | Boot -> options.boot <- true ; (n+1) | Verbose -> Env_state.set_verbose true ; (n+1) + | Locals -> options.locals <- true ; (n+1) | Inside -> Env_state.set_draw_mode Env_state.Inside ; (n+1) | Edges -> Env_state.set_draw_mode Env_state.Edges ; (n+1) | Vertices -> Env_state.set_draw_mode Env_state.Vertices ; (n+1) @@ -323,7 +328,7 @@ and Random.init seed ; output_string stderr "#The random engine was initialized with the seed "; output_string stderr (string_of_int seed); - output_string stderr "\n "; + output_string stderr "\n"; flush stderr ; @@ -350,6 +355,22 @@ and ) (Env_state.out_env_unsorted ()); print_string "\n"; + + if + options.locals + then + ( + print_string "#locals "; + List.iter + (fun (vn,vt) -> + match Env_state.alias_to_formula_or_expr vn with + Some _ -> () + | None -> print_string (vn ^ ":" ^ (var_type_to_string2 vt) ^ " ") + ) + (Env_state.loc_env_unsorted ()); + print_string "\n" + ); + flush stdout; if options.boot @@ -365,7 +386,15 @@ and (Env_state.input ()) (Env_state.output ()) (Env_state.local ()) ; - write_rif_output (Env_state.out_env_unsorted ()) out ; + write_rif (Env_state.out_env_unsorted ()) out ; + if + options.locals + then + ( + print_string "\n#locals "; + write_rif (Env_state.loc_env_unsorted ()) loc + ); + else (); main_loop 1 ; @@ -426,7 +455,15 @@ and (Env_state.output ()) (Env_state.local ()) ; - write_rif_output (Env_state.out_env_unsorted ()) out ; + write_rif (Env_state.out_env_unsorted ()) out ; + if + options.locals + then + ( + print_string "\n#locals "; + write_rif (Env_state.loc_env_unsorted ()) loc + ); + if options.show_automata then ( if (previous_nodes <> Env_state.current_nodes ()) then Show_env.luc_to_dot (flatten (Env_state.current_nodes ())) diff --git a/source/ne.ml b/source/ne.ml index d26445a71dd309b3880e9b4070d91d057df38ccc..b4bf74a973965ec55ee005adb4987aaec32f66a3 100644 --- a/source/ne.ml +++ b/source/ne.ml @@ -326,7 +326,8 @@ let (to_string_gen : (Value.num -> string) -> string -> t -> string) = fun nv_to_string plus ne -> (StringMap.fold (fun vn v acc -> - if vn = "" + if + vn = "" then let v_str = nv_to_string v in match v_str with diff --git a/source/parse_env.ml b/source/parse_env.ml index 21225496fd2a02aaf1deb2db7189336a047b45cc..93648044e2e63d89ad577b465f5c892c7fa29af7 100644 --- a/source/parse_env.ml +++ b/source/parse_env.ml @@ -17,7 +17,9 @@ let debug_parsing = false type read_arc = Arc of node * arc_info * node type label_ce = (string * Control.expr) -type formula_def = (string * formula) + +type alias_def = (string * formula_or_expr) + type read_automata = Automata of node (* Initial node *) @@ -26,7 +28,8 @@ type read_automata = Automata of * vnt list (* Local var list *) * vnt list (* pre var list *) * label_ce list (* Definition of labels representing control expressions *) - * formula_def list (* Definition of formula *) + * int list (* transient nodes list *) + * alias_def list (* Definition of aliases *) * read_arc list (* Transition list *) (* Keywords of the automata format *) @@ -39,9 +42,17 @@ let lexer = Genlex.make_lexer ["("; ")"; ","; ";"; "."; type aut_token = Genlex.token Stream.t -let default_max_float = 1000. -let default_max_int = 1000 -let default_min_int = -1000 +(* + XXX What should be the default values ??? + Too big values migth break other tools (e.g., sim2chro...) +*) +let default_max_float = (float_of_int max_int) /. 2.**(float_of_int (!Util.precision + 1)) +let default_max_int = max_int/10 +let default_min_int = min_int/10 + +(* let default_max_float = 10000. *) +(* let default_max_int = 10000 *) +(* let default_min_int = -10000 *) let print_err_msg ic tok tok_list func msg msg2 = @@ -124,16 +135,17 @@ let print_err_msg ic tok tok_list func msg msg2 = print_string ("around character " ^ (string_of_int char_pos) ^ ". "); print_string ("\n*** The next 10 tokens are: "); List.iter (print_genlex_token) tok_list ; - print_string ("\n" ^ - (if msg = "" - then "" - else ("*** whereas either one of the following token(s) was (were) expected:\n\t" ^ - (add_quotes msg) ^ " \n")) ^ - (if msg2 = "" - then "" - else ("*** " ^ msg2) - ) - ); + print_string + ("\n" ^ + (if msg = "" + then "" + else ("*** whereas either one of the following token(s) was (were) expected:\n\t" ^ + (add_quotes msg) ^ " \n")) ^ + (if msg2 = "" + then "" + else ("*** " ^ msg2) + ) + ); flush stdout let print_debug ic msg = @@ -166,7 +178,7 @@ let rec ) ) with - Failure _ -> failwith "" + Failure fail -> failwith fail | e -> print_err_msg ic tok tok_list "parse_list" ",\n\t; .\n\t; ,\n\t.\n\t)\n\t%" ""; failwith "" @@ -189,8 +201,8 @@ and (parse_list_var_tail: in_channel -> (in_channel -> aut_token -> 'a) -> aut_t -> tail ) ) - with Failure - _ -> failwith "" + with + Failure fail -> failwith fail | e -> print_err_msg ic tok tok_list "parse_list_var_tail" ",\n\t; .\n\t; ,\n\t.\n\t)\n\t%" ""; failwith "" @@ -209,8 +221,9 @@ and (parse_list_var_tail2: in_channel -> (in_channel -> aut_token -> 'a) -> aut_ | [< a = parse ic ; tail = (parse_list_var_tail ic (parse)) >] -> a :: tail ) - with Failure _ -> failwith "" | e -> - print_err_msg ic tok tok_list "parse_list_var_tail2" "" ""; + with + Failure "" -> failwith "" + | e -> print_err_msg ic tok tok_list "parse_list_var_tail2" "" ""; failwith "" and (parse_list_var_tail3: in_channel -> (in_channel -> aut_token -> 'a) -> aut_token -> 'a list) = fun ic parse tok -> @@ -223,7 +236,9 @@ and (parse_list_var_tail3: in_channel -> (in_channel -> aut_token -> 'a) -> aut_ | [< 'Genlex.Kwd "." >] -> [] | [< 'Genlex.Kwd "," >] -> [] ) - with Failure _ -> failwith "" | e -> + with + Failure "" -> failwith "" + | e -> print_err_msg ic tok tok_list "parse_list_var_tail3" "" ""; failwith "" @@ -242,7 +257,9 @@ let rec (parse_pragma: in_channel -> aut_token -> pragma) = [< 'Genlex.String label ; 'Genlex.Ident ":"; 'Genlex.String pragma >] -> (label, pragma) ) - with Failure _ -> failwith "" | e -> + with + Failure "" -> failwith "" + | e -> print_err_msg ic tok tok_list "parse_pragma" "" ""; failwith "" and @@ -262,7 +279,9 @@ and ) | _ -> [] ) - with Failure _ -> failwith "" | e -> + with + Failure "" -> failwith "" + | e -> print_err_msg ic tok tok_list "parse_pragma_list" "" ""; failwith "" @@ -274,73 +293,101 @@ let rec (parse_automata: in_channel -> aut_token -> read_automata) = ( match tok with parser [< - li = parse_list_inputs_opt ic; - lo = parse_list_outputs_opt ic; - ll = parse_list_locals_opt ic; - lpre = parse_list_pre_opt ic; + li = parse_list_inputs_opt ic; + lo = parse_list_outputs_opt ic; + ll = parse_list_locals_opt ic; + lpre = parse_list_pre_opt ic; llabel_ce = parse_list_label_ce_opt ic ; - fdl = parse_list_formula_def_opt ic (li @ lo @ ll @ lpre) ; - 'Genlex.Ident "start_node"; 'Genlex.Kwd "="; 'Genlex.Int node_id; 'Genlex.Kwd "," ; - arcs_nb = parse_list_arcs_nb_opt ic; - nodes_nb = parse_list_nodes_nb_opt ic; - 'Genlex.Ident "arcs"; 'Genlex.Kwd "="; la = parse_list_arc ic (li @ lo @ ll @ lpre) ; + la = parse_list_alias_types_opt ic ; + adl = parse_list_aliases_def_opt ic (li @ lo @ ll @ lpre @ la); + 'Genlex.Ident "start_node"; 'Genlex.Kwd "="; + 'Genlex.Int node_id; 'Genlex.Kwd "," ; + arcs_nb = parse_arcs_nb_opt ic; + nodes_nb = parse_nodes_nb_opt ic; + transient_nodes = parse_list_nodes_opt ic; + 'Genlex.Ident "arcs"; 'Genlex.Kwd "="; + larcs = parse_list_arc ic (li @ lo @ ll @ lpre @ la) ; 'Genlex.Kwd "."; >] - -> Automata(node_id, li, lo, ll, lpre, llabel_ce, fdl, la) + -> Automata(node_id, li, lo, ll, lpre, llabel_ce, + transient_nodes, adl, larcs) ) - with Failure - _ -> failwith "" + with + Failure "" -> flush stdout ; failwith "" | e -> print_err_msg ic tok tok_list "parse_automata" - ("inputs = ,\n\t" ^ - "outputs = ,\n\t" ^ - "locals = ,\n\t" ^ - "pre =
 ,\n\t" ^
-	     "ctrl_expr =  ,\n\t" ^
-	     "formula =  ,\n\t" ^
+	    ("{inputs =  ,}?\n\t" ^ 
+	     "{outputs =  ,}?\n\t" ^
+	     "{locals =  ,}?\n\t" ^
+	     "{pre = 
 ,}?\n\t" ^
+	     "{ctrl_expr =  ,}?\n\t" ^
+	     "{alias =  ,}?\n\t" ^
+	     "{alias_def =  ,}?\n\t" ^
 	     "start_node =  ,\n\t" ^
-	     "arc_nb =  ,\n\t" ^
-	     "node_nb =  ,\n\t" ^
+	     "{arc_nb =  ,}?\n\t" ^
+	     "{node_nb =  ,}?\n\t" ^
+	     "transient_nodes =  ,\n\t" ^
 	     "arcs =  .") "" ;
 	    failwith ""
 	      
 and parse_list_inputs_opt ic tok =
   match tok with parser  
-      [<'Genlex.Ident "inputs"; 'Genlex.Kwd "="; l = parse_list_var ic ;'Genlex.Kwd "," 
+      [<'Genlex.Ident "inputs"; 'Genlex.Kwd "="; l = parse_list_var ic ;
+	'Genlex.Kwd "," 
+      >] -> l
+    | [< >]  -> []
+
+and parse_list_alias_types_opt ic tok =
+  match tok with parser  
+      [<'Genlex.Ident "alias"; 'Genlex.Kwd "="; l = parse_list_var ic ;
+	'Genlex.Kwd "," 
       >] -> l
     | [< >]  -> []
 
 and parse_list_outputs_opt ic tok =
   match tok with parser  
-      [<'Genlex.Ident "outputs"; 'Genlex.Kwd "="; l = parse_list_genvar ic ;'Genlex.Kwd "," 
+      [<'Genlex.Ident "outputs"; 'Genlex.Kwd "="; l = parse_list_genvar ic ;
+	'Genlex.Kwd "," 
       >] -> l
     | [< >]  -> []
 
 and parse_list_locals_opt ic tok =
   match tok with parser  
-      [<'Genlex.Ident "locals"; 'Genlex.Kwd "="; l = parse_list_genvar ic ;'Genlex.Kwd "," 
+      [<'Genlex.Ident "locals"; 'Genlex.Kwd "="; l = parse_list_genvar ic ;
+	'Genlex.Kwd "," 
       >] -> l
     | [< >]  -> []
 
+
 and parse_list_pre_opt ic tok =
   match tok with parser  
-      [<'Genlex.Ident "pre"; 'Genlex.Kwd "="; l = parse_list_prevar ic ;'Genlex.Kwd "," 
+      [<'Genlex.Ident "pre"; 'Genlex.Kwd "="; l = parse_list_prevar ic ;
+	'Genlex.Kwd "," 
       >] -> l
     | [< >]  -> []
 
 
-and parse_list_arcs_nb_opt ic tok =
+and parse_arcs_nb_opt ic tok =
   match tok with parser  
-      [< 'Genlex.Ident "arcs_nb"; 'Genlex.Kwd "="; 'Genlex.Int arcs_nb  ; 'Genlex.Kwd "," 
+      [< 'Genlex.Ident "arcs_nb"; 'Genlex.Kwd "="; 'Genlex.Int arcs_nb ;
+	 'Genlex.Kwd "," 
       >] -> arcs_nb
     | [< >]  -> 0
 
-and parse_list_nodes_nb_opt ic tok =
+and parse_nodes_nb_opt ic tok =
   match tok with parser  
-      [< 'Genlex.Ident "nodes_nb"; 'Genlex.Kwd "="; 'Genlex.Int nodes_nb  ; 'Genlex.Kwd "," 
+      [< 'Genlex.Ident "nodes_nb"; 'Genlex.Kwd "="; 'Genlex.Int nodes_nb ; 
+	 'Genlex.Kwd "," 
       >] -> nodes_nb
     | [< >]  -> 0
 
+and parse_list_nodes_opt ic tok =
+  match tok with parser  
+      [< 'Genlex.Ident "transient_nodes"; 'Genlex.Kwd "=" ;
+	 l = parse_list_nodes ic ; 'Genlex.Kwd "," 
+      >] -> l
+    | [< >]  -> []
+
 
 and parse_list_label_ce_opt ic tok =
   match tok with parser  
@@ -350,13 +397,40 @@ and parse_list_label_ce_opt ic tok =
     | [< >]  -> []
 	
 
-and parse_list_formula_def_opt ic vars tok =
-  match tok with parser  
-      [< 'Genlex.Ident "formula"; 'Genlex.Kwd "="; 
-	 fdl = parse_list_formula_def ic vars ; 'Genlex.Kwd ","
-      >] -> fdl
-    | [< >]  -> []
+and parse_list_aliases_def_opt ic vars tok =
+    let _ = print_debug ic ("parse_list_aliases_def_opt \n") in
+    let tok_list = Stream.npeek 10 tok in
+      try
+	match tok with parser  
+	    [< 'Genlex.Ident "alias_def"; 'Genlex.Kwd "="; 
+	       adl = parse_list_aliases_def ic vars ; 'Genlex.Kwd ","
+	    >] -> adl
+	  | [< >]  -> []
+	with Failure "" -> failwith "" | e ->
+	print_err_msg ic tok tok_list "parse_list_aliases_def_opt"  "" "" ;
+	failwith ""
+	      
 
+and (parse_list_nodes: in_channel -> aut_token -> int list) = 
+  fun ic tok -> 
+    let _ = print_debug ic ("parse_list_nodes \n") in
+    let tok_list = Stream.npeek 10 tok in
+      try
+	parse_list ic (parse_node) tok
+      with Failure "" -> failwith "" | e ->
+	print_err_msg ic tok tok_list "parse_list_nodes"  "" "" ;
+	failwith ""
+and (parse_node: in_channel -> aut_token -> int) =
+  fun ic tok ->
+    let _ = print_debug ic ("parse_node \n") in
+    let tok_list = Stream.npeek 10 tok in
+      try (
+	match tok with parser
+	    [< 'Genlex.Int i >] -> i
+      )
+      with Failure "" -> failwith "" | e ->
+	print_err_msg ic tok tok_list "parse_node"  "" "";
+	failwith ""
 
 
 and (parse_list_var: in_channel -> aut_token -> vnt list) = 
@@ -365,7 +439,7 @@ and (parse_list_var: in_channel -> aut_token -> vnt list) =
     let tok_list = Stream.npeek 10 tok in
       try
 	parse_list ic (parse_var) tok
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_list_var"  "" "" ;
 	failwith ""
 and (parse_var: in_channel -> aut_token -> vnt) = 
@@ -392,7 +466,7 @@ and (parse_var: in_channel -> aut_token -> vnt) =
 			failwith ""
 		)
 	)
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_var"  "(  ,  )" "";
 	failwith ""
 
@@ -401,7 +475,7 @@ and (parse_list_genvar: in_channel -> aut_token -> vnt list) =
     let tok_list = Stream.npeek 10 tok in
       try
 	parse_list ic (parse_genvar) tok
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_list_genvar"  "" "";
 	failwith ""
 and (parse_genvar: in_channel -> aut_token -> vnt) = 
@@ -415,7 +489,7 @@ and (parse_genvar: in_channel -> aut_token -> vnt) =
 		 vnt = parse_type ic var typ >]
 	      -> vnt
 	)
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_genvar"  "( or ," "";
 	failwith ""
 and (parse_type: in_channel ->  string -> string -> aut_token -> vnt) =
@@ -428,14 +502,14 @@ and (parse_type: in_channel ->  string -> string -> aut_token -> vnt) =
 		( match typ with
 		      "bool" -> (var, BoolT)
 		    | "float" -> (var, FloatT(-.default_max_float, default_max_float))
-		    | "int" -> (var, IntT(min_int / 2, max_int / 2))
+		    | "int" -> (var, IntT(default_min_int, default_max_int))
 		    | str -> 
 			print_err_msg ic tok tok_list "parse_type" "" (str ^ " is not a valid type");
 			failwith ""
 		)
 	    | [< 'Genlex.Kwd ","; vnt = parse_type_more ic var typ >] -> vnt
 	)
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_type"  " \n\t \n\t" "";
 	failwith ""
 	    
@@ -472,7 +546,7 @@ and (parse_type_more: in_channel ->  string -> string -> aut_token -> vnt) =
 			failwith ""
 		)
 	)
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_type_more"  " \n\t \n\t" "";
 	failwith ""
 	    
@@ -482,7 +556,7 @@ and (parse_list_prevar: in_channel -> aut_token -> vnt list) =
     let tok_list = Stream.npeek 10 tok in
       try
 	parse_list ic (parse_prevar) tok
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_list_prevar"  "" "";
 	failwith ""
 and (parse_prevar: in_channel -> aut_token -> vnt) = 
@@ -500,47 +574,56 @@ and (parse_prevar: in_channel -> aut_token -> vnt) =
 	      ( match typ with
 		  "bool" -> (pre_var, BoolT)
 		| "float" -> (pre_var, FloatT(-.default_max_float, default_max_float))
-		| "int" -> (pre_var, IntT(min_int / 2, max_int / 2))
+		| "int" -> (pre_var, IntT(default_min_int, default_max_int))
 		| str -> 
 		    print_err_msg ic tok tok_list "" "" (str ^ " is not a valid type" );
 		    failwith ""
 	      )
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_prevar"  "" "";
 	failwith ""
 
 
 
-and (parse_list_formula_def: in_channel -> vnt list -> aut_token 
-       -> (string * formula) list) =
+and (parse_list_aliases_def: in_channel -> vnt list -> aut_token 
+       -> (string * formula_or_expr) list) =
   fun ic vars tok -> 
-    let _ = print_debug ic ("parse_list_formula_def \n") in
+    let _ = print_debug ic ("parse_list_aliases_def \n") in
     let tok_list = Stream.npeek 10 tok in
       try
-	parse_list ic (fun ic -> parse_formula_def ic vars) tok
-      with Failure _ -> failwith "" | e ->
-	print_err_msg ic tok tok_list "parse_list_formula_def"  "" "";
+	parse_list ic (fun ic -> parse_alias_def ic vars) tok
+      with Failure "" -> failwith "" | e ->
+	print_err_msg ic tok tok_list "parse_list_aliases_def"  "" "";
 	failwith ""
-and (parse_formula_def: in_channel -> vnt list -> aut_token -> string * formula) = 
+
+and (parse_alias_def: in_channel -> vnt list -> aut_token
+       -> string * formula_or_expr) = 
   fun ic vars tok -> 
-    let _ = print_debug ic ("parse_formula_def \n") in
+    let _ = print_debug ic ("parse_alias_def \n") in
     let tok_list = Stream.npeek 10 tok in
       try (
 	match tok with parser  
 	    [< 'Genlex.Kwd "(" ; 
-	       'Genlex.Ident label ;	 
-	       'Genlex.Kwd "," ; 
-	       f = parse_formula ic vars ; 
+	       'Genlex.Ident alias ;	 
+	       'Genlex.Kwd "," ;  
+	       def = parse_formula_or_expr alias ic vars ; 
 	       'Genlex.Kwd ")" 
 	    >]
 	    -> 
-	      (label, f)
+	      (alias, def)
       )
-      with Failure _ -> failwith "" | e ->
-	print_err_msg ic tok tok_list "parse_formula_def"  "" "";
+      with Failure "" -> failwith "" | e ->
+	print_err_msg ic tok tok_list "parse_alias_def"  "" "" ;
 	failwith ""
 
+and parse_formula_or_expr label ic vars tok =
+  (match List.assoc label vars with
+       BoolT -> Fo (parse_formula ic vars tok)
+     | IntT(_,_) -> Ex (parse_expr ic vars tok)
+     | FloatT(_,_) -> Ex (parse_expr ic vars tok) 
+  )
+
 
 and (parse_list_label_ce: in_channel -> aut_token -> label_ce list) =
   fun ic tok -> 
@@ -548,7 +631,7 @@ and (parse_list_label_ce: in_channel -> aut_token -> label_ce list) =
     let tok_list = Stream.npeek 10 tok in
       try
 	parse_list ic (parse_ce) tok
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_list_label_ce"  "" "";
 	failwith ""
 and (parse_ce: in_channel -> aut_token -> label_ce) = 
@@ -566,7 +649,7 @@ and (parse_ce: in_channel -> aut_token -> label_ce) =
 	    -> 
 	      (label, expr)
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_ce"  "" "";
 	failwith ""
 and (parse_list_ctrl_expr : in_channel -> aut_token -> Control.expr) =
@@ -576,7 +659,7 @@ and (parse_list_ctrl_expr : in_channel -> aut_token -> Control.expr) =
     let ce_list =
       try
 	parse_list ic (parse_ctrl_expr) tok
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_list_ctrl_expr"  "" "";
 	failwith ""
     in
@@ -620,7 +703,7 @@ and (parse_ctrl_expr: in_channel -> aut_token -> Control.expr) =
 	    >] ->  
 	      Control.ite test cel_then cel_else
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_ctrl_expr"  
 	"Set\n\tSet_between\n\tDraw_gauss\n\tDec\n\tIfThenElse (  ) (  )" "";
 	failwith ""
@@ -634,7 +717,7 @@ and (parse_float: in_channel -> aut_token -> float) =
 	    [< 'Genlex.Float f >] -> f
 	  | [< 'Genlex.Int i >] -> (float_of_int i)
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_float"  " or " "";
 	failwith ""
 
@@ -648,7 +731,7 @@ and (parse_int_or_var: in_channel -> aut_token -> Control.number) =
 	    [< 'Genlex.Int i >] -> Control.IntExpr(i)
 	  | [< 'Genlex.Ident id >] -> Control.VarExpr(id)
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_int_or_var"  " or " "";
 	failwith ""
 	    
@@ -673,7 +756,7 @@ and (parse_test_expr: in_channel -> aut_token -> Control.test) =
 		| "=="  -> Control.EqExpr(n1, n2)
 		| _ -> assert false
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_test_expr"  ">\n\t<\n\t<=\n\t>=\n\t=\n\t==" "";
 	failwith ""
 	    
@@ -684,7 +767,7 @@ and (parse_list_arc: in_channel -> vnt list -> aut_token -> read_arc list) =
     let tok_list = Stream.npeek 10 tok in
       try
 	parse_list ic (fun ic -> parse_arc ic vars) tok
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_list_arc"  "" "";
 	failwith ""
 and (parse_arc: in_channel -> vnt list -> aut_token -> read_arc) = 
@@ -702,7 +785,7 @@ and (parse_arc: in_channel -> vnt list -> aut_token -> read_arc) =
 	    >]
 	    -> Arc(node_from, arc_info, node_to)
       ) 
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_arc" "From  To  With "  "";
 	failwith ""
 and (parse_arc_info: in_channel -> vnt list -> aut_token -> arc_info) = 
@@ -718,7 +801,7 @@ and (parse_arc_info: in_channel -> vnt list -> aut_token -> arc_info) =
 	    >] 
 	    -> (weight, expr, pc)
       ) 
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_arc_info" " :" "";
 	failwith ""
 and (parse_post_cond_id: in_channel -> aut_token -> string) =
@@ -733,7 +816,7 @@ and (parse_post_cond_id: in_channel -> aut_token -> string) =
 	      label
 	  | _ -> "identity"
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_post_cond_id"  "" "";
 	failwith ""
 and (parse_weight: in_channel -> vnt list -> aut_token -> weight) = 
@@ -748,7 +831,7 @@ and (parse_weight: in_channel -> vnt list -> aut_token -> weight) =
 	    -> Wident_not_sig(lbl)
 	  | [< 'Genlex.Ident lbl >] -> Wident(lbl)
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_weight"  "[!]  or " "";
 	failwith ""
 
@@ -768,7 +851,7 @@ and (parse_formula_eps: in_channel -> vnt list -> aut_token -> formula_eps) =
 	  | 
 	    [< f = parse_formula ic vars >] -> Form(f)
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_formula_eps"  "eps or (" "";
 	failwith ""
 	    
@@ -866,7 +949,13 @@ and (parse_formula: in_channel -> vnt list -> aut_token -> formula) =
 	    ->
 	      let pre_id = Prevar.create_prevar_name  i id in
 	      (* Ditto *)
-	      let (_, vt) = List.find (fun (vn,vt) -> vn = pre_id) vars in
+	      let (_, vt) = 
+		try List.find (fun (vn,vt) -> vn = pre_id) vars
+		with Not_found -> 
+		  failwith ("\n the " ^ pre_id 
+			    ^ " type is not known yet. You need "
+			    ^ "to declare its type before using it.\n")
+	      in
 		( match vt with
 		    BoolT -> Bvar(pre_id)
 		  | _  -> 
@@ -879,7 +968,12 @@ and (parse_formula: in_channel -> vnt list -> aut_token -> formula) =
 	    [< 'Genlex.Ident id ; pl = parse_pragma_list ic  >] 
 	    -> 
 	      (* When an ident is encountered, it can be a numeric one *)
-	      let (_, vt) = List.find (fun (vn,vt) -> vn = id) vars in
+	      let (_, vt) = 
+		try List.find (fun (vn,vt) -> vn = id) vars 
+		with Not_found -> 
+		  failwith ("\n the " ^ id ^ " type is not known yet. You need " 
+			    ^ "to declare its type before using it.\n")
+	      in
 		( match vt with
 		    BoolT -> Bvar(id)
 		  | _  -> 
@@ -889,7 +983,7 @@ and (parse_formula: in_channel -> vnt list -> aut_token -> formula) =
 		      failwith ""
 		)
 	)
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_formula"  
 	("!\n\tIfThenElse\n\t==\n\ttrue\n\tfalse\n\t(\n\t||\n\t&&\n\t#\n\t=\n\t<>\n\t<\n\t>\n\t" ^
 	 "<=\n\t>=\n\tpre") "";
@@ -909,7 +1003,7 @@ and (parse_expr: in_channel -> vnt list -> aut_token -> expr) =
 	match tok with parser  
 	    [< e1 = parse_mult ic vars; e = parse_more_adds ic e1 vars >] -> e
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_expr"  "" "";
 	failwith ""
 and (parse_more_adds: in_channel -> expr -> vnt list -> aut_token -> expr) = 
@@ -933,7 +1027,7 @@ and (parse_more_adds: in_channel -> expr -> vnt list -> aut_token -> expr) =
 	  | [< >] 
 	    -> e1
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_more_adds"  "+ or -" "";
 	failwith ""
 
@@ -945,7 +1039,7 @@ and (parse_mult: in_channel -> vnt list -> aut_token -> expr) =
 	match tok with parser  
 	    [< e1 = parse_simple ic vars; e = parse_more_mults ic e1 vars >] -> e
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_more_adds"  "" "";
 	failwith ""
 and (parse_more_mults: in_channel -> expr -> vnt list -> aut_token -> expr) = 
@@ -975,7 +1069,7 @@ and (parse_more_mults: in_channel -> expr -> vnt list -> aut_token -> expr) =
 	  | [<  >] 
 	    -> e1
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list "parse_more_mults"  "*\n\t/\n\t mod" "";
 	failwith ""
 and (parse_simple: in_channel -> vnt list -> aut_token -> expr) = 
@@ -987,9 +1081,15 @@ and (parse_simple: in_channel -> vnt list -> aut_token -> expr) =
 	    
 	  | [< 'Genlex.Ident "pre"; 'Genlex.Kwd "(";  
 	       'Genlex.Int i ; 'Genlex.Kwd "," ; 'Genlex.Ident id;   
-	       'Genlex.Kwd ")"; pl = parse_pragma_list ic   >] -> 
+	       'Genlex.Kwd ")"; pl = parse_pragma_list ic   
+	    >] -> 
 	      let s = Prevar.create_prevar_name i id in 
-	      let (_, vt) = List.find (fun (vn,vt) -> vn = s) vars in 
+	      let (_, vt) = 
+		try List.find (fun (vn,vt) -> vn = s) vars 
+		with Not_found -> 
+		  failwith ("\n the " ^ s ^ " type is not known yet. You need " 
+			    ^ "to declare its type before using it.\n")
+	      in 
 	      let var = 
 		match vt with 
 		    BoolT -> assert false  
@@ -999,7 +1099,12 @@ and (parse_simple: in_channel -> vnt list -> aut_token -> expr) =
 		var 
 
 	  | [< 'Genlex.Ident s ; pl = parse_pragma_list ic  >] -> 
-	      let (_, vt) = List.find (fun (vn,vt) -> vn = s) vars in
+	      let (_, vt) = 
+		try List.find (fun (vn,vt) -> vn = s) vars 
+		with Not_found -> 
+		  failwith ("\n the " ^ s ^ " type is not known yet. You need " 
+			    ^ "to declare its type before using it.\n")
+	      in
 	      let var =
 		match vt with
 		    BoolT -> assert false 
@@ -1019,7 +1124,7 @@ and (parse_simple: in_channel -> vnt list -> aut_token -> expr) =
 	  | [< 'Genlex.Kwd "("; e = parse_expr ic vars; 'Genlex.Kwd ")" >] -> e
 
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
 	print_err_msg ic tok tok_list 
 	"parse_simple"  "pre (  ,  )\n\t\n\t(  )\n\t[-] \n\t[-] \n\tIfThenElseNum   " 
 	"";
@@ -1032,7 +1137,23 @@ and (parse_minus_int_or_float: in_channel -> vnt list -> aut_token -> expr) =
 	match tok with parser  
 	    [< 'Genlex.Int i;   pl = parse_pragma_list ic  >] -> Ival(-i)
 	  | [< 'Genlex.Float f; pl = parse_pragma_list ic  >] -> Fval(-.f)
+	  | [< 'Genlex.Ident s ; pl = parse_pragma_list ic  >] -> 
+	      let (_, vt) = 
+		try List.find (fun (vn,vt) -> vn = s) vars 
+		with Not_found -> 
+		  failwith ("\n the " ^ s ^ " type is not known yet. You need " 
+			    ^ "to declare its type before using it.\n")
+	      in
+	      let var =
+		match vt with
+		    BoolT -> assert false 
+		  | IntT(_,_) -> (Diff (Ival 0) (Ivar s))
+		  | FloatT(_,_) -> (Diff (Fval 0.) (Fvar s))
+	      in
+		var
+
+		  
       )
-      with Failure _ -> failwith "" | e ->
+      with Failure "" -> failwith "" | e ->
         print_err_msg ic tok tok_list "parse_minus_int_or_float"  "\n\t" "";
 	failwith ""  
diff --git a/source/parse_env.mli b/source/parse_env.mli
index c75ae1a8395f0ae8e122619a511770d6d39cc457..f29b0365573c89ed5538b884c7dec50812f8d2a3 100644
--- a/source/parse_env.mli
+++ b/source/parse_env.mli
@@ -20,7 +20,9 @@ type aut_token = Genlex.token Stream.t
 type read_arc = Arc of int * arc_info * int
 
 type label_ce = (string * Control.expr) 
-type formula_def = (string * formula) 
+
+type alias_def = (string * formula_or_expr) 
+
 
 type read_automata = Automata of 
     int              (* Initial node *)
@@ -29,7 +31,8 @@ type read_automata = Automata of
   * vnt list         (* Local var list *)
   * vnt list         (* pre var list *)
   * label_ce list    (* Definition of labels representing control expressions *)
-  * formula_def list (* Definition of formula *)
+  * int list         (* transient nodes list *)
+  * alias_def list   (* Definition of aliases *)
   * read_arc list    (* Transition list *)
 
 val lexer : char Stream.t -> aut_token
diff --git a/source/sim2chro.ml b/source/sim2chro.ml
index b73f43ce78d912b016cd1bb0c57d3b8cc02a1fff..ff86aa35c864a119f971426580579a23c468650b 100644
--- a/source/sim2chro.ml
+++ b/source/sim2chro.ml
@@ -59,6 +59,7 @@ let (put_current_step_values: out_channel -> int -> env_out -> env_in -> env_loc
 	input;
 
       if display_local_var then
+(* 	put "#locs "; *)
 	List.iter 
 	  (fun (_, e) -> (Value.print  rif e)) 
 	  (Util.sort_list_string_pair local);
diff --git a/source/solver.ml b/source/solver.ml
index 50f58891793a58ee8d64f04e79c90ce89b450af1..62f8ab71af4eee14c5dd299888addef88a410570 100644
--- a/source/solver.ml
+++ b/source/solver.ml
@@ -1,5 +1,5 @@
 (*-----------------------------------------------------------------------
- ** Copyright (C) 2001, 2002 - Verimag.
+** Copyright (C) 2001-2003 - Verimag.
 ** This file may only be copied under the terms of the GNU Library General
 ** Public License 
 **-----------------------------------------------------------------------
@@ -47,9 +47,9 @@ let (lookup: env_in -> subst list -> var_name -> Value.t option) =
 				      ^ "*** You need to rewrite your environment"
 				      ^ " spec in such a way that no pre is used"
 				      ^ " for that variable at that step. \n"
-				    ^ " ");
-		      flush stdout;
-		      exit 2
+				      ^ " ");
+			flush stdout;
+			exit 1
 		    )
 		  else
 		    None 
@@ -125,19 +125,35 @@ let rec (formula_to_bdd : env_in -> formula -> Bdd.t * bool) =
 			then (Bdd.dtrue  (Env_state.bdd_manager ()), true)
 			else (Bdd.dfalse (Env_state.bdd_manager ()), true)
 		    | Some(_) -> 
-			print_string (vn ^ " is not a boolean!\n");
-			assert false
+			print_string "\n*** type error\n*** ";
+			print_string (vn ^ " is not a boolean.\n");
+			exit 1
 		    | None ->
-			if List.mem vn (Env_state.pre_var_names ())
-			then failwith 
-			  ("*** " ^ vn ^ " is unknown at this stage.\n "
-			   ^ "*** Make sure you have not used "
-			   ^ "a pre on a output var at the 1st step, \n "
-			   ^ "*** or a pre on a input var at the second step in "
-			   ^ "your formula in the environment.\n ")
-			else (Bdd.ithvar (Env_state.bdd_manager ())
-				(Env_state.linear_constraint_to_index (Bv(vn)) false), 
-				false)
+			if 
+			  List.mem vn (Env_state.pre_var_names ())
+			then 
+			  (
+			    print_string 
+			     ("*** " ^ vn ^ " is unknown at this stage.\n "
+			      ^ "*** Make sure you have not used "
+			      ^ "a pre on a output var at the 1st step, \n "
+			      ^ "*** or a pre on a input var at the second step in "
+			      ^ "your formula in the environment.\n ");
+			    exit 1
+			  )
+			else 
+			  (match Env_state.alias_to_formula_or_expr vn with
+			       Some (Fo(fa)) -> formula_to_bdd input fa
+			     | Some (Ex(e)) -> 
+				 print_string "\n*** type error\n*** ";
+				 print_string (expr_to_string e) ;
+				 print_string " is not a boolean.\n";
+				 exit 1
+			     | None -> 
+				 (Bdd.ithvar (Env_state.bdd_manager ())
+				    (Env_state.linear_constraint_to_index (Bv(vn)) false), 
+				    false)
+			  )
 		)
   		
 	    | Eq(e1, e2) -> 
@@ -225,19 +241,31 @@ and
 		       true
 		    )
 		| None ->
-		    (Gne.make 
-		       (Ne.make str (I(1)))
-		       (Bdd.dtrue (Env_state.bdd_manager ()))
-		       false
+		    (match Env_state.alias_to_formula_or_expr str with
+			 Some (Ex(ea)) -> 
+			   expr_to_gne ea input
+		       | Some (Fo(f)) -> 
+			   print_string "\n*** Type error.\n*** ";
+			   print_string (formula_to_string f) ;
+			   print_string " ougth to be a numeric expression.\n";
+			   exit 1
+		       | None -> 
+			   (Gne.make 
+			      (Ne.make str (I(1)))
+			      (Bdd.dtrue (Env_state.bdd_manager ()))
+			      false
+			   )
 		    )
 		| Some(N(F(f))) -> 
+		    print_string "\n*** Type error.\n*** ";
 		    print_string ((string_of_float f) 
 				  ^ "is a float, but an int is expected.\n");
-		    assert false
+		    exit 1
 		| Some(B(f)) -> 
+		    print_string "\n*** Type error.\n*** ";
 		    print_string ((string_of_bool f) 
 				  ^ "is a bool, but an int is expected.\n");
-		    assert false
+		    exit 1
 	    )
 
 	| Fvar(str) ->
@@ -249,19 +277,30 @@ and
 			true
 		    )
 		| None ->
-		    ( Gne.make 
-			(Ne.make str (F(1.))) 
-			(Bdd.dtrue (Env_state.bdd_manager ()))
-			false
+		    (match Env_state.alias_to_formula_or_expr str with
+			 Some (Ex(ea)) -> expr_to_gne ea input
+		       | Some (Fo(f)) -> 
+			   print_string "\n*** Type error.\n*** ";
+			   print_string (formula_to_string f) ;
+			   print_string " ougth to be a numeric expression.\n";
+			   exit 1
+		       | None -> 
+			   (Gne.make 
+			      (Ne.make str (F(1.))) 
+			      (Bdd.dtrue (Env_state.bdd_manager ()))
+			      false
+			   )
 		    )
 		| Some(N(I(i))) -> 
+		    print_string "\n*** Type error.\n*** ";
 		    print_string ((string_of_int i) 
 				  ^ "is an int, but a float is expected.\n");
-		    assert false
+		    exit 1
 		| Some(B(f)) -> 
+		    print_string "\n*** Type error.\n*** ";
 		    print_string ((string_of_bool f) 
 				  ^ "is a bool, not a float is expected.\n");
-		    assert false
+		    exit 1
 	    )
 
 	| Ival(i) ->  
@@ -282,15 +321,8 @@ and
 	    let (add_formula_to_gne_acc : Bdd.t -> bool -> Ne.t -> 
 		   Bdd.t * bool -> Gne.t -> Gne.t) = 
 	      fun bdd dep1 nexpr (c, dep2) acc -> 
-		(* Used (by a Gne.fold) to add the condition [c] to every
+		(* Used (by Gne.fold) to add the condition [c] to every
 		   condition of a garded expression. *)
-		let _ = assert (
-		  try
- 		    let _ = Gne.find nexpr acc in
-		      false
-		  with Not_found -> true
-		) 
-		in
 		let new_bdd = (Bdd.dand bdd c) in
 		  if Bdd.is_false new_bdd
 		  then acc
@@ -303,7 +335,9 @@ and
 	    let gne1 = 
 	      Gne.fold (add_formula_to_gne_acc bdd depf) gne_t (Gne.empty ())
 	    in
-	    let gne  = Gne.fold (add_formula_to_gne_acc bdd_not depf) gne_e gne1 in
+	    let gne  = 
+	      Gne.fold (add_formula_to_gne_acc bdd_not depf) gne_e gne1 
+	    in
 	      gne
     in
       gne
@@ -874,7 +908,7 @@ let (draw : vn list -> vnt list -> Bdd.t -> Bdd.t -> subst list * subst list) =
 		  draw_inside store_range sl
 	    | Env_state.Vertices ->
 		let sl = draw_vertices store_poly [] in
-		  draw_inside store_range sl
+		  draw_vertices store_range sl
     in
     let num_subst_l = 
       List.map 
@@ -930,7 +964,8 @@ let (solve_formula: env_in -> int -> formula -> formula -> vnt list ->
       (* The bdd of f has necessarily been computed (by is_satisfiable) *)
       try Env_state.bdd f
       with 
-	  Not_found -> Env_state.bdd_global f
+	  Not_found -> 
+	    (try Env_state.bdd_global f with _ -> assert false)
 	| e ->
 	    print_string ((Printexc.to_string e) ^ "\n");
 	    flush stdout;
diff --git a/source/solver.mli b/source/solver.mli
index c17ead4081b1e9b68e5ca3d2b1c448087695aa39..9cd7fff86a13774071f38ba17a1e667a5c71faba 100644
--- a/source/solver.mli
+++ b/source/solver.mli
@@ -1,5 +1,5 @@
 (*-----------------------------------------------------------------------
-** Copyright (C) 2001-2002 - Verimag.
+** Copyright (C) 2001-2003 - Verimag.
 ** This file may only be copied under the terms of the GNU Library General
 ** Public License 
 **-----------------------------------------------------------------------
diff --git a/test/losange-3d.luc b/test/losange-3d.luc
new file mode 100644
index 0000000000000000000000000000000000000000..0a5a105a16ae70e889c99c981366758908105814
--- /dev/null
+++ b/test/losange-3d.luc
@@ -0,0 +1,21 @@
+(* inputs  = (dont_care, float), *)
+outputs  = 
+ (a,float);
+ (b,float);
+ (c,float),
+locals  = (cpt, int),
+pre     = (pre(1, cpt), int ),
+alias   = (losange_cstr, bool),
+alias_def =  
+   (losange_cstr, && && && && &&
+       (> c  0.) (< c 4.) 
+       (> (a + 10. * b) 0.) (< (a + 10. * b - 3.) 0.) 
+       (< (a - 10. * b) 0.) (> (a - 10. * b + 3.) 0.)
+   ),
+start_node = 0,
+arcs =
+  From 0 To 1  With 1 : && (= cpt 0) losange_cstr ;
+  From 1 To 1  With 1 : && && 
+                  (< pre(1,cpt) 10000) (= cpt (pre(1,cpt)+1)) 
+                  losange_cstr 
+.
diff --git a/test/losange.luc b/test/losange.luc
new file mode 100644
index 0000000000000000000000000000000000000000..c9c7b6bebe590f56dfe616dfafa5a2a7b6b3e98e
--- /dev/null
+++ b/test/losange.luc
@@ -0,0 +1,20 @@
+
+inputs  = 
+ (toto, bool),
+outputs  = 
+ (a,float, -100., 100.);
+ (b,float, -100., 100.),
+
+locals = (c1, bool) ; (a_plus_b, float) ; (a_alias, float),
+pre   = ,
+alias = (c1, (> (a + b) 0.)); (a_plus_b, a+b); (a_alias, a),
+
+start_node = 0,
+transient_nodes = 3,
+arcs =
+
+(*   From 0 To 0  With 1 :  (< (a+b) 0.)  *)
+
+  From 0 To 0  With 1 : && && && c1 (< (a_plus_b - 3.) 0.) 
+                                 (< (a - b) 0.) (> (a - b + 3.) 0.) 
+.
diff --git a/test/passerelle.luc b/test/passerelle.luc
index 224b077867cd9a97d8657f327f78f844c83ccec8..236ee3354d53d3ffb532572c626a7bdb5e17a4cf 100644
--- a/test/passerelle.luc
+++ b/test/passerelle.luc
@@ -11,7 +11,7 @@ outputs  =
 locals  =   ,
 pre   =   ,
 ctrl_expr   = , 
-formula   = , 
+alias = , 
 start_node =  0,
 arcs_nb = 0,
 nodes_nb = 0,
diff --git a/test/temp_float.luc b/test/temp_float.luc
index 7d4ce508e341f71bf1d7f72887c5d24e74eb040a..2252c8e8ffdc954c659973952d5b202d12be8aac 100644
--- a/test/temp_float.luc
+++ b/test/temp_float.luc
@@ -5,7 +5,7 @@ outputs = (U,float, 1., 60.),
 locals  = (Dudt %"scr":"15,2,16,2"; "foo":"bar"%,float, -100., 100.), 
 pre     = (pre(1,U),float); (pre(1, Dudt), float) ; (pre(1,Heat_on), bool), 
 ctrl_expr   = , 
-formula   = , 
+alias   = , 
 start_node  = 0,
 arcs_nb = 0,
 nodes_nb = 0,
diff --git a/test/temp_int.luc b/test/temp_int.luc
index 8a0afcc5a163b9e6ff3dd299070e6ac6be367a74..8ed963c4c22cac83f4241c1cccfb74ca37fc6275 100644
--- a/test/temp_int.luc
+++ b/test/temp_int.luc
@@ -7,7 +7,7 @@ ctrl_expr   =
              (w2, Draw_gauss titi 10. 1.; 
                    Dec titi;
                    IfThenElse (> titi  0) ( Set toto 0) ( Set toto 1 )),
-formula   = , 
+alias   = , 
 start_node  = 0,
 arcs_nb = 0,
 nodes_nb = 0,
diff --git a/test/time-ecrins.exp b/test/time-ecrins.exp
index 40cd731e57882edcb90db0545a401be824ef9b97..472a6cef9e3b15e8e5888d01cc93ace6ae8a83da 100644
--- a/test/time-ecrins.exp
+++ b/test/time-ecrins.exp
@@ -1,17 +1,17 @@
 Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
-	Command being timed: "/tmp/lurette8/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 3.40
-	System time (seconds): 0.21
-	Percent of CPU this job got: 96%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.75
+	Command being timed: "/tmp/lurette18/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
+	User time (seconds): 3.24
+	System time (seconds): 0.24
+	Percent of CPU this job got: 94%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.69
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 18592
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 18590
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -23,19 +23,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 8.06
-	System time (seconds): 0.44
-	Percent of CPU this job got: 98%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:08.59
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
+	User time (seconds): 8.42
+	System time (seconds): 0.29
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:08.74
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 33124
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 33616
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -47,19 +47,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 100 50 50 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 18.76
-	System time (seconds): 0.71
-	Percent of CPU this job got: 99%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:19.60
+	Command being timed: "/tmp/lurette18/lurette 100 50 50 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
+	User time (seconds): 18.53
+	System time (seconds): 0.67
+	Percent of CPU this job got: 95%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:20.09
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 54139
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 54133
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -71,19 +71,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 1.12
-	System time (seconds): 0.20
-	Percent of CPU this job got: 91%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.44
+	Command being timed: "/tmp/lurette18/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
+	User time (seconds): 1.19
+	System time (seconds): 0.15
+	Percent of CPU this job got: 98%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.36
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 18586
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 18585
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -95,19 +95,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 2.61
-	System time (seconds): 0.23
-	Percent of CPU this job got: 98%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.88
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
+	User time (seconds): 2.56
+	System time (seconds): 0.27
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.83
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 23448
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 23161
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -119,19 +119,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 0.86
-	System time (seconds): 0.25
-	Percent of CPU this job got: 88%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.25
+	Command being timed: "/tmp/lurette18/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
+	User time (seconds): 1.00
+	System time (seconds): 0.16
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.16
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 18586
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 18585
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -143,19 +143,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 2.87
-	System time (seconds): 0.30
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
+	User time (seconds): 2.75
+	System time (seconds): 0.25
 	Percent of CPU this job got: 99%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.17
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.00
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 23898
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 23836
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -166,3 +166,51 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Signals delivered: 0
 	Page size (bytes): 4096
 	Exit status: 0
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.04
+	System time (seconds): 0.16
+	Percent of CPU this job got: 47%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.41
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18535
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette18/lurette 1 10000 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.04
+	System time (seconds): 0.17
+	Percent of CPU this job got: 84%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.24
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18535
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
diff --git a/test/time-ecrins.res b/test/time-ecrins.res
index 40cd731e57882edcb90db0545a401be824ef9b97..472a6cef9e3b15e8e5888d01cc93ace6ae8a83da 100644
--- a/test/time-ecrins.res
+++ b/test/time-ecrins.res
@@ -1,17 +1,17 @@
 Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
-	Command being timed: "/tmp/lurette8/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 3.40
-	System time (seconds): 0.21
-	Percent of CPU this job got: 96%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.75
+	Command being timed: "/tmp/lurette18/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
+	User time (seconds): 3.24
+	System time (seconds): 0.24
+	Percent of CPU this job got: 94%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.69
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 18592
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 18590
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -23,19 +23,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 8.06
-	System time (seconds): 0.44
-	Percent of CPU this job got: 98%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:08.59
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
+	User time (seconds): 8.42
+	System time (seconds): 0.29
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:08.74
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 33124
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 33616
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -47,19 +47,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 100 50 50 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 18.76
-	System time (seconds): 0.71
-	Percent of CPU this job got: 99%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:19.60
+	Command being timed: "/tmp/lurette18/lurette 100 50 50 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
+	User time (seconds): 18.53
+	System time (seconds): 0.67
+	Percent of CPU this job got: 95%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:20.09
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 54139
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 54133
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -71,19 +71,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 1.12
-	System time (seconds): 0.20
-	Percent of CPU this job got: 91%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.44
+	Command being timed: "/tmp/lurette18/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
+	User time (seconds): 1.19
+	System time (seconds): 0.15
+	Percent of CPU this job got: 98%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.36
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 18586
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 18585
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -95,19 +95,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 2.61
-	System time (seconds): 0.23
-	Percent of CPU this job got: 98%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.88
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
+	User time (seconds): 2.56
+	System time (seconds): 0.27
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.83
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 23448
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 23161
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -119,19 +119,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 0.86
-	System time (seconds): 0.25
-	Percent of CPU this job got: 88%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.25
+	Command being timed: "/tmp/lurette18/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
+	User time (seconds): 1.00
+	System time (seconds): 0.16
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.16
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 18586
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 18585
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -143,19 +143,19 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Page size (bytes): 4096
 	Exit status: 0
  
-	Command being timed: "/tmp/lurette8/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 2.87
-	System time (seconds): 0.30
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
+	User time (seconds): 2.75
+	System time (seconds): 0.25
 	Percent of CPU this job got: 99%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.17
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.00
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 23898
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 23836
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -166,3 +166,51 @@ Linux ecrins 2.4.20-verimag #1 SMP Fri Jan 24 10:16:46 CET 2003 i686 unknown
 	Signals delivered: 0
 	Page size (bytes): 4096
 	Exit status: 0
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette18/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.04
+	System time (seconds): 0.16
+	Percent of CPU this job got: 47%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.41
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18535
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette18/lurette 1 10000 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.04
+	System time (seconds): 0.17
+	Percent of CPU this job got: 84%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.24
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18535
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
diff --git a/test/time-ossau.exp b/test/time-ossau.exp
index 2ce88f8969e55eec7d32cab6e41e39a0d4c85560..604b3e3910fd1df9ebad1232b7263e759caf1a77 100644
--- a/test/time-ossau.exp
+++ b/test/time-ossau.exp
@@ -1,17 +1,17 @@
 Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Command being timed: "/tmp/lurette2/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 11.85
-	System time (seconds): 0.62
-	Percent of CPU this job got: 81%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:15.37
+	User time (seconds): 11.08
+	System time (seconds): 0.46
+	Percent of CPU this job got: 92%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:12.47
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 18592
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 18590
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -24,18 +24,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 24.16
-	System time (seconds): 0.69
-	Percent of CPU this job got: 88%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:28.12
+	User time (seconds): 22.11
+	System time (seconds): 0.73
+	Percent of CPU this job got: 91%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:24.89
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 33124
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 33616
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -48,18 +48,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 100 50 50 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 50.98
-	System time (seconds): 1.10
-	Percent of CPU this job got: 88%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:59.09
+	User time (seconds): 49.79
+	System time (seconds): 1.59
+	Percent of CPU this job got: 95%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:53.69
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 54139
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 54133
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -72,18 +72,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 3.47
-	System time (seconds): 0.49
-	Percent of CPU this job got: 84%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.66
+	User time (seconds): 3.61
+	System time (seconds): 0.51
+	Percent of CPU this job got: 97%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.22
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 18585
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 18584
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -96,18 +96,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 7.36
-	System time (seconds): 0.45
-	Percent of CPU this job got: 81%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.57
+	User time (seconds): 8.58
+	System time (seconds): 0.57
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.17
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 23447
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 23160
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -120,18 +120,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 1.67
-	System time (seconds): 0.53
-	Percent of CPU this job got: 56%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.91
+	User time (seconds): 3.14
+	System time (seconds): 0.45
+	Percent of CPU this job got: 98%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.65
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 18585
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 18584
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -144,18 +144,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 9.98
-	System time (seconds): 0.57
-	Percent of CPU this job got: 98%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:10.67
+	User time (seconds): 9.18
+	System time (seconds): 0.51
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.77
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 23897
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 23835
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -166,3 +166,51 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Signals delivered: 0
 	Page size (bytes): 4096
 	Exit status: 0
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.19
+	System time (seconds): 0.40
+	Percent of CPU this job got: 97%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.60
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18534
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette2/lurette 1 10000 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.16
+	System time (seconds): 0.44
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.60
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18534
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
diff --git a/test/time-ossau.res b/test/time-ossau.res
index 2ce88f8969e55eec7d32cab6e41e39a0d4c85560..604b3e3910fd1df9ebad1232b7263e759caf1a77 100644
--- a/test/time-ossau.res
+++ b/test/time-ossau.res
@@ -1,17 +1,17 @@
 Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Command being timed: "/tmp/lurette2/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 11.85
-	System time (seconds): 0.62
-	Percent of CPU this job got: 81%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:15.37
+	User time (seconds): 11.08
+	System time (seconds): 0.46
+	Percent of CPU this job got: 92%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:12.47
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 18592
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 18590
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -24,18 +24,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 24.16
-	System time (seconds): 0.69
-	Percent of CPU this job got: 88%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:28.12
+	User time (seconds): 22.11
+	System time (seconds): 0.73
+	Percent of CPU this job got: 91%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:24.89
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 33124
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 33616
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -48,18 +48,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 100 50 50 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/tram.luc /home/jahier/lurette/test/usager.luc /home/jahier/lurette/test/porte.luc /home/jahier/lurette/test/passerelle.luc"
-	User time (seconds): 50.98
-	System time (seconds): 1.10
-	Percent of CPU this job got: 88%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:59.09
+	User time (seconds): 49.79
+	System time (seconds): 1.59
+	Percent of CPU this job got: 95%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:53.69
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 239
-	Minor (reclaiming a frame) page faults: 54139
+	Major (requiring I/O) page faults: 245
+	Minor (reclaiming a frame) page faults: 54133
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -72,18 +72,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 3.47
-	System time (seconds): 0.49
-	Percent of CPU this job got: 84%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.66
+	User time (seconds): 3.61
+	System time (seconds): 0.51
+	Percent of CPU this job got: 97%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.22
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 18585
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 18584
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -96,18 +96,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_float.luc"
-	User time (seconds): 7.36
-	System time (seconds): 0.45
-	Percent of CPU this job got: 81%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.57
+	User time (seconds): 8.58
+	System time (seconds): 0.57
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.17
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 252
-	Minor (reclaiming a frame) page faults: 23447
+	Major (requiring I/O) page faults: 257
+	Minor (reclaiming a frame) page faults: 23160
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -120,18 +120,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10000 1 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 1.67
-	System time (seconds): 0.53
-	Percent of CPU this job got: 56%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.91
+	User time (seconds): 3.14
+	System time (seconds): 0.45
+	Percent of CPU this job got: 98%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.65
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 18585
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 18584
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -144,18 +144,18 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Exit status: 0
  
 	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/temp_int.luc"
-	User time (seconds): 9.98
-	System time (seconds): 0.57
-	Percent of CPU this job got: 98%
-	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:10.67
+	User time (seconds): 9.18
+	System time (seconds): 0.51
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:09.77
 	Average shared text size (kbytes): 0
 	Average unshared data size (kbytes): 0
 	Average stack size (kbytes): 0
 	Average total size (kbytes): 0
 	Maximum resident set size (kbytes): 0
 	Average resident set size (kbytes): 0
-	Major (requiring I/O) page faults: 251
-	Minor (reclaiming a frame) page faults: 23897
+	Major (requiring I/O) page faults: 255
+	Minor (reclaiming a frame) page faults: 23835
 	Voluntary context switches: 0
 	Involuntary context switches: 0
 	Swaps: 0
@@ -166,3 +166,51 @@ Linux ossau 2.4.20-verimag #1 SMP Wed Jan 29 14:17:32 CET 2003 i686 unknown
 	Signals delivered: 0
 	Page size (bytes): 4096
 	Exit status: 0
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette2/lurette 10 100 100 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.19
+	System time (seconds): 0.40
+	Percent of CPU this job got: 97%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.60
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18534
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
+Command exited with non-zero status 2
+	Command being timed: "/tmp/lurette2/lurette 1 10000 1 --draw-inside -seed 1015403953 --precision 2 --no-oracle -o lurette.rif -ns2c -nlv /home/jahier/lurette/test/losange-3d.luc"
+	User time (seconds): 0.16
+	System time (seconds): 0.44
+	Percent of CPU this job got: 99%
+	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.60
+	Average shared text size (kbytes): 0
+	Average unshared data size (kbytes): 0
+	Average stack size (kbytes): 0
+	Average total size (kbytes): 0
+	Maximum resident set size (kbytes): 0
+	Average resident set size (kbytes): 0
+	Major (requiring I/O) page faults: 233
+	Minor (reclaiming a frame) page faults: 18534
+	Voluntary context switches: 0
+	Involuntary context switches: 0
+	Swaps: 0
+	File system inputs: 0
+	File system outputs: 0
+	Socket messages sent: 0
+	Socket messages received: 0
+	Signals delivered: 0
+	Page size (bytes): 4096
+	Exit status: 2
diff --git a/test/tram.luc b/test/tram.luc
index 124ee19b1110b8167533079912f02cc9b10e29f3..b08d057b0871f83215df133de7bfce2c68a2edc5 100644
--- a/test/tram.luc
+++ b/test/tram.luc
@@ -12,7 +12,7 @@ outputs = (en_marche,bool);
 locals  = ,
 pre  = ;,
 ctrl_expr   = , 
-formula   = , 
+alias   = , 
 start_node  = 0,
 arcs_nb = 0,
 nodes_nb = 0,
diff --git a/test/usager.luc b/test/usager.luc
index a958114eb5677972a27c463bbe1bac8ae2946a4c..591affe2442d66c8292f4add6f99003cfd6283d2 100644
--- a/test/usager.luc
+++ b/test/usager.luc
@@ -7,7 +7,7 @@ outputs =   (demande_pass,bool);(demande_porte,bool),
 locals  =   ,
 pre     =  ,
 ctrl_expr   = , 
-formula   = , 
+alias   = , 
 start_node  =   0,
 arcs_nb = 0,
 nodes_nb = 0,
diff --git a/user-rules b/user-rules
index d283449e44161b20da89421922536afef382cb07..b4e3d6308d67a94ac38a6f78ccddfb54d0667551 100644
--- a/user-rules
+++ b/user-rules
@@ -93,6 +93,13 @@ time:
 	\
 	$(LURETTE_PATH)/bin/lurettetop --prefix "/usr/bin/time -o time-$(HOST).res -a -v " -go --no-local-var -sut heater_int -l 10 -td 100 -tf 100 -seed 1015403953 \
 	    --do-not-show-step -ns2c   temp_int ;\
+	\
+	$(LURETTE_PATH)/bin/lurettetop --prefix "/usr/bin/time -o time-$(HOST).res -a -v " -go --no-local-var -sut test_losange -l 10 -td 100 -tf 100 -seed 1015403953 \
+	    --do-not-show-step -ns2c   losange-3d.luc ;\
+	$(LURETTE_PATH)/bin/lurettetop --prefix "/usr/bin/time -o time-$(HOST).res -a -v " -go --no-local-var -sut test_losange -l 1 -td 1 -tf 10000 -seed 1015403953 \
+	    --do-not-show-step -ns2c   losange-3d.luc ;\
+	\
+	\
 	\rm -f time-$(HOST).diff; diff -u time-$(HOST).exp time-$(HOST).res >> time-$(HOST).diff; cat time-$(HOST).diff
 
 
@@ -117,6 +124,8 @@ test3:
 	   --do-not-show-step -ns2c -o heater_float.rif temp_float;\
 	rm -f test3.res; diff -u heater_float.rif.exp heater_float.rif > test3.res
 
+
+
 test: clean_lib lib test1 test2 test3
 	ls -l test1.res test2.res test3.res