Commit fcca9b09 authored by Pascal Raymond's avatar Pascal Raymond
Browse files

Abstract module Value.OfIdent for manipulating var/value association

parent 3a2d6f89
......@@ -43,4 +43,3 @@ test-lutin:
test: test-lucky test-lutin
# cd ocaml/crazy-rabbit/ && make test ;
......@@ -24,4 +24,4 @@ Z=6398 y=-82 x=53 z=79
Z=9741 y=-147 x=99 z=98
Z=10000 x=99 y=99 z=-148
Z=-10000 x=99 y=99 z=-148
Z=f y=f x=t
Z=f x=t y=f
......@@ -24,4 +24,4 @@ Z=6398 y=-82 x=53 z=79
Z=9741 y=-147 x=99 z=98
Z=10000 x=99 y=99 z=-148
Z=-10000 x=99 y=99 z=-148
Z=f y=f x=t
Z=f x=t y=f
......@@ -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 1
#oracle_outputs T
#step 2
6.04 6.20 6.53 6.54 #outs T
#locs 2 2727.98
#locs 2727.98 2
#oracle_outputs T
#step 3
5.86 5.53 5.94 6.31 #outs T
#locs 0 6.04
#locs 6.04 0
#oracle_outputs T
#step 4
5.87 6.13 5.50 6.20 #outs T
#locs 0 5.86
#locs 5.86 0
#oracle_outputs T
#step 5
6.05 5.82 6.08 6.54 #outs T
#locs 0 5.87
#locs 5.87 0
#oracle_outputs T
#step 6
6.17 6.56 6.37 6.05 #outs T
#locs 0 6.05
#locs 6.05 0
#oracle_outputs T
#step 7
6.35 6.28 5.86 5.96 #outs T
#locs 0 6.17
#locs 6.17 0
#oracle_outputs T
#step 8
6.54 6.05 6.08 7.03 #outs T
#locs 0 6.35
#locs 6.35 0
#oracle_outputs T
#step 9
6.61 6.23 6.74 6.73 #outs T
#locs 0 6.54
#locs 6.54 0
#oracle_outputs T
#step 10
6.67 6.64 6.30 6.35 #outs T
#locs 0 6.61
#locs 6.61 0
#oracle_outputs T
#step 11
6.69 7.19 6.67 6.67 #outs T
#locs 0 6.67
#locs 6.67 0
#oracle_outputs T
#step 12
6.88 6.78 7.35 7.18 #outs T
#locs 0 6.69
#locs 6.69 0
#oracle_outputs T
#step 13
6.90 7.01 7.05 6.85 #outs T
#locs 0 6.88
#locs 6.88 0
#oracle_outputs T
#step 14
6.91 6.92 6.67 6.65 #outs T
#locs 0 6.90
#locs 6.90 0
#oracle_outputs T
#step 15
6.92 6.75 6.43 6.59 #outs T
#locs 0 6.91
#locs 6.91 0
#oracle_outputs T
#step 16
7.05 7.31 7.28 7.09 #outs T
#locs 0 6.92
#locs 6.92 0
#oracle_outputs T
#step 17
7.19 7.04 7.55 6.82 #outs T
#locs 0 7.05
#locs 7.05 0
#oracle_outputs T
#step 18
7.23 7.31 7.17 7.37 #outs T
#locs 0 7.19
#locs 7.19 0
#oracle_outputs T
#step 19
7.39 6.93 7.86 7.48 #outs T
#locs 0 7.23
#locs 7.23 0
#oracle_outputs T
#step 20
7.58 7.94 8.08 7.61 #outs T
#locs 0 7.39
#locs 7.39 0
#oracle_outputs T
#step 21
7.64 7.72 7.44 7.33 #outs T
#locs 0 7.58
#locs 7.58 0
#oracle_outputs T
#step 22
7.70 7.79 8.03 7.24 #outs T
#locs 0 7.64
#locs 7.64 0
#oracle_outputs T
#step 23
7.84 8.31 7.54 7.80 #outs T
#locs 0 7.70
#locs 7.70 0
#oracle_outputs T
#step 24
8.01 8.13 8.14 8.08 #outs T
#locs 0 7.84
#locs 7.84 0
#oracle_outputs T
#step 25
8.12 8.12 7.90 8.46 #outs T
#locs 0 8.01
#locs 8.01 0
#oracle_outputs T
#step 26
8.13 8.21 7.66 8.55 #outs T
#locs 0 8.12
#locs 8.12 0
#oracle_outputs T
#step 27
8.19 7.98 8.41 8.25 #outs T
#locs 0 8.13
#locs 8.13 0
#oracle_outputs T
#step 28
8.31 8.70 7.89 8.06 #outs T
#locs 0 8.19
#locs 8.19 0
#oracle_outputs T
#step 29
8.50 8.55 8.18 8.79 #outs T
#locs 0 8.31
#locs 8.31 0
#oracle_outputs T
#step 30
8.51 8.56 8.52 8.90 #outs T
#locs 0 8.50
#locs 8.50 0
#oracle_outputs T
#step 31
8.54 8.73 8.24 8.40 #outs T
#locs 0 8.51
#locs 8.51 0
#oracle_outputs T
#step 32
8.67 8.91 8.79 8.79 #outs T
#locs 0 8.54
#locs 8.54 0
#oracle_outputs T
#step 33
8.77 8.57 8.60 8.48 #outs T
#locs 0 8.67
#locs 8.67 0
#oracle_outputs T
#step 34
8.84 8.48 9.15 8.65 #outs T
#locs 0 8.77
#locs 8.77 0
#oracle_outputs T
#step 35
9.02 9.49 8.77 9.10 #outs F
#locs 0 8.84
#locs 8.84 0
#oracle_outputs T
#step 36
8.93 9.43 9.40 9.40 #outs F
#locs 0 9.02
#locs 9.02 0
#oracle_outputs T
#step 37
8.75 8.72 9.17 8.34 #outs F
#locs 0 8.93
#locs 8.93 0
#oracle_outputs T
#step 38
8.67 8.75 8.64 8.95 #outs F
#locs 0 8.75
#locs 8.75 0
#oracle_outputs T
#step 39
8.58 8.43 8.41 8.25 #outs F
#locs 0 8.67
#locs 8.67 0
#oracle_outputs T
#step 40
8.57 8.20 9.05 8.91 #outs F
#locs 0 8.58
#locs 8.58 0
#oracle_outputs T
#step 41
8.38 7.92 8.15 8.53 #outs F
#locs 0 8.57
#locs 8.57 0
#oracle_outputs T
#step 42
8.22 8.33 8.09 8.27 #outs F
#locs 0 8.38
#locs 8.38 0
#oracle_outputs T
#step 43
8.13 7.79 8.38 8.24 #outs F
#locs 0 8.22
#locs 8.22 0
#oracle_outputs T
#step 44
7.99 7.62 7.70 8.21 #outs F
#locs 0 8.13
#locs 8.13 0
#oracle_outputs T
#step 45
7.97 7.97 8.44 8.28 #outs F
#locs 0 7.99
#locs 7.99 0
#oracle_outputs T
#step 46
7.79 7.71 7.93 7.92 #outs F
#locs 0 7.97
#locs 7.97 0
#oracle_outputs T
#step 47
7.78 7.88 8.15 8.27 #outs F
#locs 0 7.79
#locs 7.79 0
#oracle_outputs T
#step 48
7.59 7.68 7.51 7.56 #outs F
#locs 0 7.78
#locs 7.78 0
#oracle_outputs T
#step 49
7.53 7.97 7.94 7.45 #outs F
#locs 0 7.59
#locs 7.59 0
#oracle_outputs T
#step 50
7.41 7.71 7.21 7.27 #outs F
#locs 0 7.53
#locs 7.53 0
#oracle_outputs T
#step 51
7.22 7.72 7.22 7.23 #outs F
#locs 0 7.41
#locs 7.41 0
#oracle_outputs T
#step 52
7.18 7.44 7.48 6.77 #outs F
#locs 0 7.22
#locs 7.22 0
#oracle_outputs T
#step 53
7.16 7.13 7.65 7.14 #outs F
#locs 0 7.18
#locs 7.18 0
#oracle_outputs T
#step 54
7.03 6.78 6.77 7.12 #outs F
#locs 0 7.16
#locs 7.16 0
#oracle_outputs T
#step 55
6.95 7.15 6.75 7.15 #outs F
#locs 0 7.03
#locs 7.03 0
#oracle_outputs T
#step 56
6.80 6.73 6.43 6.73 #outs F
#locs 0 6.95
#locs 6.95 0
#oracle_outputs T
#step 57
6.74 6.36 6.29 6.24 #outs F
#locs 0 6.80
#locs 6.80 0
#oracle_outputs T
#step 58
6.61 6.46 6.92 6.55 #outs F
#locs 0 6.74
#locs 6.74 0
#oracle_outputs T
#step 59
6.59 6.14 6.87 7.06 #outs F
#locs 0 6.61
#locs 6.61 0
#oracle_outputs T
#step 60
6.41 6.23 6.11 6.42 #outs F
#locs 0 6.59
#locs 6.59 0
#oracle_outputs T
#step 61
6.40 6.81 6.40 6.86 #outs F
#locs 0 6.41
#locs 6.41 0
#oracle_outputs T
#step 62
6.23 6.26 6.09 6.65 #outs F
#locs 0 6.40
#locs 6.40 0
#oracle_outputs T
#step 63
6.09 6.47 6.36 6.57 #outs F
#locs 0 6.23
#locs 6.23 0
#oracle_outputs T
#step 64
5.93 6.26 6.00 5.51 #outs F
#locs 0 6.09
#locs 6.09 0
#oracle_outputs T
#step 65
6.07 5.78 6.40 6.39 #outs F
#locs 0 5.93
#locs 5.93 0
#oracle_outputs T
#step 66
6.10 5.67 6.07 6.38 #outs T
#locs 0 6.07
#locs 6.07 0
#oracle_outputs T
#step 67
6.28 6.07 6.64 5.99 #outs T
#locs 0 6.10
#locs 6.10 0
#oracle_outputs T
#step 68
6.34 5.91 6.25 5.87 #outs T
#locs 0 6.28
#locs 6.28 0
#oracle_outputs T
#step 69
6.45 6.22 6.38 6.81 #outs T
#locs 0 6.34
#locs 6.34 0
#oracle_outputs T
#step 70
6.46 6.46 6.46 6.78 #outs T
#locs 0 6.45
#locs 6.45 0
#oracle_outputs T
#step 71
6.57 6.31 6.31 6.35 #outs T
#locs 0 6.46
#locs 6.46 0
#oracle_outputs T
#step 72
6.58 6.92 6.46 6.35 #outs T
#locs 0 6.57
#locs 6.57 0
#oracle_outputs T
#step 73
6.61 6.63 6.46 6.81 #outs T
#locs 0 6.58
#locs 6.58 0
#oracle_outputs T
#step 74
6.63 6.57 6.69 6.63 #outs T
#locs 0 6.61
#locs 6.61 0
#oracle_outputs T
#step 75
6.68 6.28 6.68 7.05 #outs T
#locs 0 6.63
#locs 6.63 0
#oracle_outputs T
#step 76
6.72 7.16 7.17 6.45 #outs T
#locs 0 6.68
#locs 6.68 0
#oracle_outputs T
#step 77
6.77 6.78 6.32 6.91 #outs T
#locs 0 6.72
#locs 6.72 0
#oracle_outputs T
#step 78
6.89 6.83 6.62 7.13 #outs T
#locs 0 6.77
#locs 6.77 0
#oracle_outputs T
#step 79
7.05 7.10 6.84 6.71 #outs T
#locs 0 6.89
#locs 6.89 0
#oracle_outputs T
#step 80
7.17 7.18 6.87 7.42 #outs T
#locs 0 7.05
#locs 7.05 0
#oracle_outputs T
#step 81
7.28 7.19 6.85 6.98 #outs T
#locs 0 7.17
#locs 7.17 0
#oracle_outputs T
#step 82
7.39 7.14 7.54 7.70 #outs T
#locs 0 7.28
#locs 7.28 0
#oracle_outputs T
#step 83
7.43 6.99 7.46 7.46 #outs T
#locs 0 7.39
#locs 7.39 0
#oracle_outputs T
#step 84
7.52 7.84 7.69 7.35 #outs T
#locs 0 7.43
#locs 7.43 0
#oracle_outputs T
#step 85
7.65 7.59 7.90 7.31 #outs T
#locs 0 7.52
#locs 7.52 0
#oracle_outputs T
#step 86
7.77 7.47 7.79 7.56 #outs T
#locs 0 7.65
#locs 7.65 0
#oracle_outputs T
#step 87
7.85 7.54 7.59 8.05 #outs T
#locs 0 7.77
#locs 7.77 0
#oracle_outputs T
#step 88
8.04 8.04 8.32 8.40 #outs T
#locs 0 7.85
#locs 7.85 0
#oracle_outputs T
#step 89
8.08 8.48 8.33 7.93 #outs T
#locs 0 8.04
#locs 8.04 0
#oracle_outputs T
#step 90
8.27 8.40 7.86 8.02 #outs T
#locs 0 8.08
#locs 8.08 0
#oracle_outputs T
#step 91
8.44 8.05 8.16 8.06 #outs T
#locs 0 8.27
#locs 8.27 0
#oracle_outputs T
#step 92
8.58 8.17 8.33 8.94 #outs T
#locs 0 8.44
#locs 8.44 0
#oracle_outputs T
#step 93
8.66 9.06 9.12 8.88 #outs F
#locs 0 8.58
#locs 8.58 0
#oracle_outputs T
#step 94
8.82 9.08 8.44 9.16 #outs F
#locs 0 8.66
#locs 8.66 0
#oracle_outputs T
#step 95
8.88 8.74 8.85 8.86 #outs F
#locs 0 8.82
#locs 8.82 0
#oracle_outputs T
#step 96
8.98 8.70 8.57 8.86 #outs F
#locs 0 8.88
#locs 8.88 0
#oracle_outputs T
#step 97
9.13 8.75 9.63 8.82 #outs F
#locs 0 8.98
#locs 8.98 0
#oracle_outputs T
#step 98
9.10 8.82 9.01 9.31 #outs F
#locs 0 9.13
#locs 9.13 0
#oracle_outputs T
#step 99
8.94 9.22 9.26 9.06 #outs F
#locs 0 9.10
#locs 9.10 0
#oracle_outputs T
#step 100
8.93 8.87 9.36 8.46 #outs F
#locs 0 8.94
#locs 8.94 0
#
# ==> The test completed; no property has been violated.
#
......
......@@ -18,23 +18,21 @@ let (get_output_var_name_and_type : unit -> (string * var_type) list) =
let tbl = Hashtbl.create 0
open Value
let (step : (string * Value.t) list -> (string, Value.t) Hashtbl.t) =
let (step : Value.OfIdent.t -> Value.OfIdent.t)=
fun inputs ->
let t = List.assoc "T" inputs in
let t = Value.OfIdent.get inputs "T" in
let res =
match t with
N(F(f)) -> if f > 9.0 then false else if f < 6.00 then true else !pre_res
| _ -> assert false
in
pre_res := res;
Hashtbl.replace tbl "Heat_on" (B(res));
tbl
Value.OfIdent.from_list [ ("Heat_on", B(res)) ]
let (step_try : (string * Value.t) list -> (string, Value.t) Hashtbl.t)=
let (step_try : Value.OfIdent.t -> Value.OfIdent.t)=
fun l ->
step l
......
......@@ -17,14 +17,15 @@ let (get_output_var_name_and_type : unit -> (string * var_type) list) =
open Value
let (step : (string * Value.t) list -> (string, Value.t) Hashtbl.t -> bool* Var.subst list) =
let (step : Value.OfIdent.t -> Value.OfIdent.t -> bool* Value.OfIdent.t) =
fun inputs outputs ->
let t =
try
List.assoc "T" inputs
Value.OfIdent.get inputs "T"
with Not_found ->
print_string ("oracle.ml: can not find variable T in the list of sut inputs\n");
print_string ("Available variables are: " ^ (String.concat ", " (fst (List.split inputs))));
let inlist = Value.OfIdent.content inputs in
print_string ("Available variables are: " ^ (String.concat ", " (fst (List.split inlist))));
print_string ("\n");
flush stdout;
exit 2
......@@ -34,8 +35,8 @@ let (step : (string * Value.t) list -> (string, Value.t) Hashtbl.t -> bool* Va
N(F(f)) -> f < 10.0
| _ -> assert false
in
ok, ["ok", (B(ok))]
(ok, Value.OfIdent.from_list [("ok", B(ok))])
let (step_try : (string * Value.t) list -> (string, Value.t) Hashtbl.t -> bool* Var.subst list)=
let (step_try : Value.OfIdent.t -> Value.OfIdent.t -> bool* Value.OfIdent.t)=
fun inputs outputs ->
step inputs outputs
......@@ -117,8 +117,9 @@ ocaml: sut.ml sut.mli oracle.ml oracle.mli lurette_exec.ml $(SUT) $(ORACLE)
$(EXTRA_INCLUDEDIRS) \
$(EXTRA_LIBSDIRS) \
$(EXTRA_LIBS) \
str.cmxa unix.cmxa nums.cmxa polka.cmxa bdd.cmxa \
$(SOURCES_ML) lurette_ml_exec.cmxa lurette_exec.ml \
str.cmxa unix.cmxa nums.cmxa polka.cmxa bdd.cmxa \
lurette_ml_exec_I.cmxa \
$(SOURCES_ML) lurette_ml_exec_II.cmxa lurette_exec.ml \
-o lurette
......
......@@ -6,7 +6,8 @@ include $(LURETTE_PATH)/source/Makefile.ln
OCAMLNCFLAGS = -inline 10
ifndef OCAMLFLAGS
OCAMLFLAGS := -noassert -unsafe
#OCAMLFLAGS := -noassert -unsafe
OCAMLFLAGS := -unsafe
endif
OCAMLFLAGS += -I $(OBJDIR) -I $(OCAMLLIB) -I $(PREFIX)/$(HOSTTYPE)/lib
......
......@@ -8,7 +8,8 @@ include $(LURETTE_PATH)/source/Makefile.ln
OCAMLNCFLAGS = -inline 10
ifndef OCAMLFLAGS
OCAMLFLAGS := -noassert -unsafe
#OCAMLFLAGS := -noassert -unsafe
OCAMLFLAGS := -unsafe
endif
OCAMLFLAGS += -I $(OBJDIR) -I $(OCAMLLIB) -I $(PREFIX)/$(HOSTTYPE)/lib
......
......@@ -6,7 +6,8 @@ include $(LURETTE_PATH)/source/Makefile.ln
OCAMLNCFLAGS = -inline 10
ifndef OCAMLFLAGS
OCAMLFLAGS := -noassert -unsafe
#OCAMLFLAGS := -noassert -unsafe
OCAMLFLAGS := -unsafe
endif
OCAMLFLAGS += -I $(OBJDIR) -I $(OCAMLLIB) -I $(PREFIX)/$(HOSTTYPE)/lib
......
......@@ -9,7 +9,8 @@ include $(LURETTE_PATH)/source/Makefile.ln
OCAMLNCFLAGS = -inline 10