Commit 459c1713 authored by Erwan Jahier's avatar Erwan Jahier
Browse files

Fix a bug when printing local var values in the Rif file from Lurette.

Alias variables were printed, but not declared in the rif preambule.

Also, keep the original variable order in the Lucky file parser.
parent dde78ee6
* Une propriété de programme que l'on arrive pas à prouver avec un
outil de vérification peut servir d'oracle à un outil de test.
=> L'outil de test et l'outil de verif doivent donc être intégrés
La question est : dans quel langage exprimer ces propriétés ?
* Il y a deux langages différents :
1) le langage pour exprimer les contraintes sur l'environnement (Lenv)
2) le langage pour spécifier l'oracle (Loracle)
Question. Doit-on avoir : Lenv = Loracle ???
Pourquoi pas. La différence étant que Lenv est un générateur, et que
Loracle n'est qu'un accepteur. Mais, bon, qui peut le plus peut le
moins.
* Pour l'instant, Lenv = Loracle = Lustre
-> Lustre ne suffit pas pour Lenv et Loracle car il ne permet pas
d'exprimer facilement la séquence (Reglo le fait).
-> Lustre (pas plus que Reglo d'ailleur) ne suffit pas pour Lenv car
il ne permet pas d'exprimer des pondérations (probas) sur les
différentes branches de l'automate représentant la propriété. Pour
l'oracle, ceci n'a aucune espèce d'importance puisque c'est juste un
accepteur, pas un générateur.
* Remarque en passant. Modéliser l'environnement ca revient à la même
chose que de modéliser les sorties de programmes pas encore écrits
(stubs).
* comparaison Lustre / Lutin
------------------------------------------------------------
Lustre | Lutin
------------------------------------------------------------
pas de séquence (1) | Séquences (via les reg expr)
|
équationnel | relationnel
(donc) déterministe | indéterministe (2)
|
pas de probas (3) | des probas
(puisque déterministe ...)|
|
------------------------------------------------------------
(1) i.e., la possibilité d'exprimer facilement la séquence. C'est
possible en Lustre, mais super lourdingue.
(2) L'indéterminisme n'est pas un problème ni pour l'oracle ni pour
Lenv car on n'a pas de contraintes temps-réels sur les propriétés
qu'ils expriment.
(3) la possibilité de pondérer les branches par des probas n'est
utile que quand on se sert des noeuds en tant que générateurs. En
d'autre terme, on ne s'en servira pas pour écrire les oracles.
......@@ -14,403 +14,403 @@
#oracle_outputs T
#step 1
8.98 8.48 8.99 8.49 #outs T
#locs 1 6845.23
#locs 6845.23
#oracle_outputs T
#step 2
6.04 6.20 6.53 6.54 #outs T
#locs 2 2727.98
#locs 2727.98
#oracle_outputs T
#step 3
5.86 5.53 5.94 6.31 #outs T
#locs 0 6.04
#locs 6.04
#oracle_outputs T
#step 4
5.87 6.13 5.50 6.20 #outs T
#locs 0 5.86
#locs 5.86
#oracle_outputs T
#step 5
6.05 5.82 6.08 6.54 #outs T
#locs 0 5.87
#locs 5.87
#oracle_outputs T
#step 6
6.17 6.56 6.37 6.05 #outs T
#locs 0 6.05
#locs 6.05
#oracle_outputs T
#step 7
6.35 6.28 5.86 5.96 #outs T
#locs 0 6.17
#locs 6.17
#oracle_outputs T
#step 8
6.54 6.05 6.08 7.03 #outs T
#locs 0 6.35
#locs 6.35
#oracle_outputs T
#step 9
6.61 6.23 6.74 6.73 #outs T
#locs 0 6.54
#locs 6.54
#oracle_outputs T
#step 10
6.67 6.64 6.30 6.35 #outs T
#locs 0 6.61
#locs 6.61
#oracle_outputs T
#step 11
6.69 7.19 6.67 6.67 #outs T
#locs 0 6.67
#locs 6.67
#oracle_outputs T
#step 12
6.88 6.78 7.35 7.18 #outs T
#locs 0 6.69
#locs 6.69
#oracle_outputs T
#step 13
6.90 7.01 7.05 6.85 #outs T
#locs 0 6.88
#locs 6.88
#oracle_outputs T
#step 14
6.91 6.92 6.67 6.65 #outs T
#locs 0 6.90
#locs 6.90
#oracle_outputs T
#step 15
6.92 6.75 6.43 6.59 #outs T
#locs 0 6.91
#locs 6.91
#oracle_outputs T
#step 16
7.05 7.31 7.28 7.09 #outs T
#locs 0 6.92
#locs 6.92
#oracle_outputs T
#step 17
7.19 7.04 7.55 6.82 #outs T
#locs 0 7.05
#locs 7.05
#oracle_outputs T
#step 18
7.23 7.31 7.17 7.37 #outs T
#locs 0 7.19
#locs 7.19
#oracle_outputs T
#step 19
7.39 6.93 7.86 7.48 #outs T
#locs 0 7.23
#locs 7.23
#oracle_outputs T
#step 20
7.58 7.94 8.08 7.61 #outs T
#locs 0 7.39
#locs 7.39
#oracle_outputs T
#step 21
7.64 7.72 7.44 7.33 #outs T
#locs 0 7.58
#locs 7.58
#oracle_outputs T
#step 22
7.70 7.79 8.03 7.24 #outs T
#locs 0 7.64
#locs 7.64
#oracle_outputs T
#step 23
7.84 8.31 7.54 7.80 #outs T
#locs 0 7.70
#locs 7.70
#oracle_outputs T
#step 24
8.01 8.13 8.14 8.08 #outs T
#locs 0 7.84
#locs 7.84
#oracle_outputs T
#step 25
8.12 8.12 7.90 8.46 #outs T
#locs 0 8.01
#locs 8.01
#oracle_outputs T
#step 26
8.13 8.21 7.66 8.55 #outs T
#locs 0 8.12
#locs 8.12
#oracle_outputs T
#step 27
8.19 7.98 8.41 8.25 #outs T
#locs 0 8.13
#locs 8.13
#oracle_outputs T
#step 28
8.31 8.70 7.89 8.06 #outs T
#locs 0 8.19
#locs 8.19
#oracle_outputs T
#step 29
8.50 8.55 8.18 8.79 #outs T
#locs 0 8.31
#locs 8.31
#oracle_outputs T
#step 30
8.51 8.56 8.52 8.90 #outs T
#locs 0 8.50
#locs 8.50
#oracle_outputs T
#step 31
8.54 8.73 8.24 8.40 #outs T
#locs 0 8.51
#locs 8.51
#oracle_outputs T
#step 32
8.67 8.91 8.79 8.79 #outs T
#locs 0 8.54
#locs 8.54
#oracle_outputs T
#step 33
8.77 8.57 8.60 8.48 #outs T
#locs 0 8.67
#locs 8.67
#oracle_outputs T
#step 34
8.84 8.48 9.15 8.65 #outs T
#locs 0 8.77
#locs 8.77
#oracle_outputs T
#step 35
9.02 9.49 8.77 9.10 #outs F
#locs 0 8.84
#locs 8.84
#oracle_outputs T
#step 36
8.93 9.43 9.40 9.40 #outs F
#locs 0 9.02
#locs 9.02
#oracle_outputs T
#step 37
8.75 8.72 9.17 8.34 #outs F
#locs 0 8.93
#locs 8.93
#oracle_outputs T
#step 38
8.67 8.75 8.64 8.95 #outs F
#locs 0 8.75
#locs 8.75
#oracle_outputs T
#step 39
8.58 8.43 8.41 8.25 #outs F
#locs 0 8.67
#locs 8.67
#oracle_outputs T
#step 40
8.57 8.20 9.05 8.91 #outs F
#locs 0 8.58
#locs 8.58
#oracle_outputs T
#step 41
8.38 7.92 8.15 8.53 #outs F
#locs 0 8.57
#locs 8.57
#oracle_outputs T
#step 42
8.22 8.33 8.09 8.27 #outs F
#locs 0 8.38
#locs 8.38
#oracle_outputs T
#step 43
8.13 7.79 8.38 8.24 #outs F
#locs 0 8.22
#locs 8.22
#oracle_outputs T
#step 44
7.99 7.62 7.70 8.21 #outs F
#locs 0 8.13
#locs 8.13
#oracle_outputs T
#step 45
7.97 7.97 8.44 8.28 #outs F
#locs 0 7.99
#locs 7.99
#oracle_outputs T
#step 46
7.79 7.71 7.93 7.92 #outs F
#locs 0 7.97
#locs 7.97
#oracle_outputs T
#step 47
7.78 7.88 8.15 8.27 #outs F
#locs 0 7.79
#locs 7.79
#oracle_outputs T
#step 48
7.59 7.68 7.51 7.56 #outs F
#locs 0 7.78
#locs 7.78
#oracle_outputs T
#step 49
7.53 7.97 7.94 7.45 #outs F
#locs 0 7.59
#locs 7.59
#oracle_outputs T
#step 50
7.41 7.71 7.21 7.27 #outs F
#locs 0 7.53
#locs 7.53
#oracle_outputs T
#step 51
7.22 7.72 7.22 7.23 #outs F
#locs 0 7.41
#locs 7.41
#oracle_outputs T
#step 52
7.18 7.44 7.48 6.77 #outs F
#locs 0 7.22
#locs 7.22
#oracle_outputs T
#step 53
7.16 7.13 7.65 7.14 #outs F
#locs 0 7.18
#locs 7.18
#oracle_outputs T
#step 54
7.03 6.78 6.77 7.12 #outs F
#locs 0 7.16
#locs 7.16
#oracle_outputs T
#step 55
6.95 7.15 6.75 7.15 #outs F
#locs 0 7.03
#locs 7.03
#oracle_outputs T
#step 56
6.80 6.73 6.43 6.73 #outs F
#locs 0 6.95
#locs 6.95
#oracle_outputs T
#step 57
6.74 6.36 6.29 6.24 #outs F
#locs 0 6.80
#locs 6.80
#oracle_outputs T
#step 58
6.61 6.46 6.92 6.55 #outs F
#locs 0 6.74
#locs 6.74
#oracle_outputs T
#step 59
6.59 6.14 6.87 7.06 #outs F
#locs 0 6.61
#locs 6.61
#oracle_outputs T
#step 60
6.41 6.23 6.11 6.42 #outs F
#locs 0 6.59
#locs 6.59
#oracle_outputs T
#step 61
6.40 6.81 6.40 6.86 #outs F
#locs 0 6.41
#locs 6.41
#oracle_outputs T
#step 62
6.23 6.26 6.09 6.65 #outs F
#locs 0 6.40
#locs 6.40
#oracle_outputs T
#step 63
6.09 6.47 6.36 6.57 #outs F
#locs 0 6.23
#locs 6.23
#oracle_outputs T
#step 64
5.93 6.26 6.00 5.51 #outs F
#locs 0 6.09
#locs 6.09
#oracle_outputs T
#step 65
6.07 5.78 6.40 6.39 #outs F
#locs 0 5.93
#locs 5.93
#oracle_outputs T
#step 66
6.10 5.67 6.07 6.38 #outs T
#locs 0 6.07
#locs 6.07
#oracle_outputs T
#step 67
6.28 6.07 6.64 5.99 #outs T
#locs 0 6.10
#locs 6.10
#oracle_outputs T
#step 68
6.34 5.91 6.25 5.87 #outs T
#locs 0 6.28
#locs 6.28
#oracle_outputs T
#step 69
6.45 6.22 6.38 6.81 #outs T
#locs 0 6.34
#locs 6.34
#oracle_outputs T
#step 70
6.46 6.46 6.46 6.78 #outs T
#locs 0 6.45
#locs 6.45
#oracle_outputs T
#step 71
6.57 6.31 6.31 6.35 #outs T
#locs 0 6.46
#locs 6.46
#oracle_outputs T
#step 72
6.58 6.92 6.46 6.35 #outs T
#locs 0 6.57
#locs 6.57
#oracle_outputs T
#step 73
6.61 6.63 6.46 6.81 #outs T
#locs 0 6.58
#locs 6.58
#oracle_outputs T
#step 74
6.63 6.57 6.69 6.63 #outs T
#locs 0 6.61
#locs 6.61
#oracle_outputs T
#step 75
6.68 6.28 6.68 7.05 #outs T
#locs 0 6.63
#locs 6.63
#oracle_outputs T
#step 76
6.72 7.16 7.17 6.45 #outs T
#locs 0 6.68
#locs 6.68
#oracle_outputs T
#step 77
6.77 6.78 6.32 6.91 #outs T
#locs 0 6.72
#locs 6.72
#oracle_outputs T
#step 78
6.89 6.83 6.62 7.13 #outs T
#locs 0 6.77
#locs 6.77
#oracle_outputs T
#step 79
7.05 7.10 6.84 6.71 #outs T
#locs 0 6.89
#locs 6.89
#oracle_outputs T
#step 80
7.17 7.18 6.87 7.42 #outs T
#locs 0 7.05
#locs 7.05
#oracle_outputs T
#step 81
7.28 7.19 6.85 6.98 #outs T
#locs 0 7.17
#locs 7.17
#oracle_outputs T
#step 82
7.39 7.14 7.54 7.70 #outs T
#locs 0 7.28
#locs 7.28
#oracle_outputs T
#step 83
7.43 6.99 7.46 7.46 #outs T
#locs 0 7.39
#locs 7.39
#oracle_outputs T
#step 84
7.52 7.84 7.69 7.35 #outs T
#locs 0 7.43
#locs 7.43
#oracle_outputs T
#step 85
7.65 7.59 7.90 7.31 #outs T
#locs 0 7.52
#locs 7.52
#oracle_outputs T
#step 86
7.77 7.47 7.79 7.56 #outs T
#locs 0 7.65
#locs 7.65
#oracle_outputs T
#step 87
7.85 7.54 7.59 8.05 #outs T
#locs 0 7.77
#locs 7.77
#oracle_outputs T
#step 88
8.04 8.04 8.32 8.40 #outs T
#locs 0 7.85
#locs 7.85
#oracle_outputs T
#step 89
8.08 8.48 8.33 7.93 #outs T
#locs 0 8.04
#locs 8.04
#oracle_outputs T
#step 90
8.27 8.40 7.86 8.02 #outs T
#locs 0 8.08
#locs 8.08
#oracle_outputs T
#step 91
8.44 8.05 8.16 8.06 #outs T
#locs 0 8.27
#locs 8.27
#oracle_outputs T
#step 92
8.58 8.17 8.33 8.94 #outs T
#locs 0 8.44
#locs 8.44
#oracle_outputs T
#step 93
8.66 9.06 9.12 8.88 #outs F
#locs 0 8.58
#locs 8.58
#oracle_outputs T
#step 94
8.82 9.08 8.44 9.16 #outs F
#locs 0 8.66
#locs 8.66
#oracle_outputs T
#step 95
8.88 8.74 8.85 8.86 #outs F
#locs 0 8.82
#locs 8.82
#oracle_outputs T
#step 96
8.98 8.70 8.57 8.86 #outs F
#locs 0 8.88
#locs 8.88
#oracle_outputs T
#step 97
9.13 8.75 9.63 8.82 #outs F
#locs 0 8.98
#locs 8.98
#oracle_outputs T
#step 98
9.10 8.82 9.01 9.31 #outs F
#locs 0 9.13
#locs 9.13
#oracle_outputs T
#step 99
8.94 9.22 9.26 9.06 #outs F
#locs 0 9.10
#locs 9.10
#oracle_outputs T
#step 100
8.93 8.87 9.36 8.46 #outs F
#locs 0 8.94
#locs 8.94
#
# ==> The test completed; no property has been violated.
#
......
......@@ -134,6 +134,8 @@ SOURCES = $(SOURCES_C) \
$(OBJDIR)/fGen.ml \
$(OBJDIR)/print.mli \
$(OBJDIR)/print.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/sim2chro.mli \
$(OBJDIR)/sim2chro.ml \
$(OBJDIR)/lucky.ml \
......
......@@ -106,11 +106,11 @@ SOURCES_OCAML = \
$(OBJDIR)/fGen.ml \
$(OBJDIR)/print.mli \
$(OBJDIR)/print.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/sim2chro.mli \
$(OBJDIR)/sim2chro.ml \
$(OBJDIR)/lucky.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/luc4ocaml.mli \
$(OBJDIR)/luc4ocaml.ml \
$(OBJDIR)/luc4ocaml_nolbl.mli \
......
......@@ -113,13 +113,13 @@ SOURCES_OCAML0:= \
$(OBJDIR)/fGen.ml \
$(OBJDIR)/print.mli \
$(OBJDIR)/print.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/sim2chro.mli \
$(OBJDIR)/sim2chro.ml \
$(OBJDIR)/lucky.ml \
$(OBJDIR)/command_line_luc_exe.mli \
$(OBJDIR)/command_line_luc_exe.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/luc_exe.mli \
$(OBJDIR)/luc_exe.ml
......
......@@ -64,6 +64,7 @@ SOURCES = \
./prog.ml \
./fGen.ml \
./print.ml \
.//rif.ml \
./sim2chro.ml \
./lucky.ml \
./command_line_luc_exe.ml \
......
......@@ -113,6 +113,8 @@ SOURCES_OCAML := \
$(OBJDIR)/fGen.ml \
$(OBJDIR)/print.mli \
$(OBJDIR)/print.ml \
$(OBJDIR)/rif.mli \
$(OBJDIR)/rif.ml \
$(OBJDIR)/sim2chro.mli \
$(OBJDIR)/sim2chro.ml \
$(OBJDIR)/lucky.ml \
......
......@@ -954,7 +954,7 @@ and parse_list_var_decl2 tdl ftbl varl vutl mode ic var acc tok =
(merge_vut (snd (flatten_user_type_fill var)) vutl) mode
(set_pos ic e1; ic) (Exp.add_var (Var.name var) var acc)
>] -> res
| [< >] -> varl, (Exp.add_var (Var.name var) var acc)
| [< >] -> varl, (Exp.add_var (Var.name var) var acc)
and (reject_unsupported_exp : Lexing.lexbuf -> Exp.t -> Type.t -> Exp.t option) =
......
......@@ -604,9 +604,9 @@ let (make_one : t -> LucParse.t -> t) =
{
reactive = acc.reactive;
bool_vars_to_gen = bvll;
num_vars_to_gen = nvll;
in_vars = in_vars';
out_vars = out_vars';
num_vars_to_gen = nvll;
in_vars = in_vars';
out_vars = out_vars';