Skip to content

Commit 39364a2

Browse files
author
Jérôme FERET
committed
format
1 parent 8e6579e commit 39364a2

5 files changed

Lines changed: 123 additions & 107 deletions

File tree

core/KaSa_rep/abstract_domains/mvbdu/boolean_mvbdu.ml

Lines changed: 90 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,10 @@ type memo_tables = {
112112
boolean_mvbdu_extensional_description_of_range_list:
113113
(int * (int option * int option)) list Hash_1.t;
114114
boolean_mvbdu_variables_of_mvbdu: unit List_sig.list Hash_1.t;
115-
boolean_mvbdu_extensional_description_of_mvbdu: (int * int) list list Hash_1.t;
116-
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold: ((int * int) list * bool Mvbdu_sig.mvbdu) list Hash_2.t;
115+
boolean_mvbdu_extensional_description_of_mvbdu:
116+
(int * int) list list Hash_1.t;
117+
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold:
118+
((int * int) list * bool Mvbdu_sig.mvbdu) list Hash_2.t;
117119
}
118120

119121
type mvbdu_dic =
@@ -340,8 +342,8 @@ let init_data parameters error =
340342
Hash_1.create parameters error 0
341343
in
342344
let error, mvbdu_extensional_description_of_mvbdu_with_threshold =
343-
Hash_2.create parameters error (0,0)
344-
in
345+
Hash_2.create parameters error (0, 0)
346+
in
345347
let error, mvbdu_rename = Hash_2.create parameters error (0, 0) in
346348
( error,
347349
{
@@ -380,8 +382,8 @@ in
380382
boolean_mvbdu_variables_of_mvbdu = mvbdu_variables_of;
381383
boolean_mvbdu_extensional_description_of_mvbdu =
382384
mvbdu_extensional_description_of_mvbdu;
383-
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold =
384-
mvbdu_extensional_description_of_mvbdu_with_threshold
385+
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold =
386+
mvbdu_extensional_description_of_mvbdu_with_threshold;
385387
} )
386388

387389
let init_remanent parameters error =
@@ -1399,80 +1401,90 @@ let rec extensional_description_of_mvbdu parameters handler error mvbdu =
13991401
},
14001402
output ) )
14011403

1402-
1403-
let extensional_description_of_mvbdu_with_threshold parameters handler error ~threshold mvbdu =
1404-
let error, (handler, bdd_true) = boolean_mvbdu_true parameters handler error parameters in
1405-
match bdd_true with
1406-
Some bdd_true ->
1407-
begin
1404+
let extensional_description_of_mvbdu_with_threshold parameters handler error
1405+
~threshold mvbdu =
1406+
let error, (handler, bdd_true) =
1407+
boolean_mvbdu_true parameters handler error parameters
1408+
in
1409+
match bdd_true with
1410+
| Some bdd_true ->
14081411
let rec aux1 parameters handler error ~threshold mvbdu =
1409-
match
1410-
Hash_2.unsafe_get parameters error (threshold,mvbdu.Mvbdu_sig.id)
1411-
handler.Memo_sig.data.boolean_mvbdu_extensional_description_of_mvbdu_with_threshold
1412-
with
1413-
| error, Some output -> error, (handler, output)
1414-
| error, None ->
1415-
let rec aux2 mvbdu remanent handler error output =
1416-
match mvbdu.Mvbdu_sig.value with
1417-
| Mvbdu_sig.Leaf true -> error, (handler, ([],bdd_true) :: output)
1418-
| Mvbdu_sig.Leaf false -> error, (handler, output)
1419-
| Mvbdu_sig.Node a ->
1420-
let id = a.Mvbdu_sig.variable in
1421-
if id <= threshold
1422-
then (* Recursion *)
1423-
let error, (handler, branch_true) =
1424-
aux1 parameters handler error ~threshold a.Mvbdu_sig.branch_true
1425-
in
1426-
let upper_bound = a.Mvbdu_sig.upper_bound in
1427-
let error, (handler, output) =
1428-
match remanent, branch_true with
1429-
| _, [] -> error, (handler, output)
1430-
| None, _ -> Exception.warn parameters error __POS__ Exit (handler, [])
1431-
| Some (var, lower_bound), list ->
1432-
let head_list =
1433-
let rec aux3 k res =
1434-
if k <= lower_bound then
1435-
res
1436-
else
1437-
aux3 (k - 1) (k :: res)
1438-
in
1439-
aux3 upper_bound []
1440-
in
1441-
let output =
1442-
List.fold_left
1443-
(fun output head ->
1444-
List.fold_left
1445-
(fun output (tail,b) -> ((var, head) :: tail,b) :: output)
1446-
output list)
1447-
output head_list
1412+
match
1413+
Hash_2.unsafe_get parameters error
1414+
(threshold, mvbdu.Mvbdu_sig.id)
1415+
handler.Memo_sig.data
1416+
.boolean_mvbdu_extensional_description_of_mvbdu_with_threshold
1417+
with
1418+
| error, Some output -> error, (handler, output)
1419+
| error, None ->
1420+
let rec aux2 mvbdu remanent handler error output =
1421+
match mvbdu.Mvbdu_sig.value with
1422+
| Mvbdu_sig.Leaf true -> error, (handler, ([], bdd_true) :: output)
1423+
| Mvbdu_sig.Leaf false -> error, (handler, output)
1424+
| Mvbdu_sig.Node a ->
1425+
let id = a.Mvbdu_sig.variable in
1426+
if id <= threshold then (
1427+
(* Recursion *)
1428+
let error, (handler, branch_true) =
1429+
aux1 parameters handler error ~threshold a.Mvbdu_sig.branch_true
1430+
in
1431+
let upper_bound = a.Mvbdu_sig.upper_bound in
1432+
let error, (handler, output) =
1433+
match remanent, branch_true with
1434+
| _, [] -> error, (handler, output)
1435+
| None, _ ->
1436+
Exception.warn parameters error __POS__ Exit (handler, [])
1437+
| Some (var, lower_bound), list ->
1438+
let head_list =
1439+
let rec aux3 k res =
1440+
if k <= lower_bound then
1441+
res
1442+
else
1443+
aux3 (k - 1) (k :: res)
14481444
in
1449-
error, (handler, output)
1450-
in
1451-
aux2 a.Mvbdu_sig.branch_false
1452-
(Some (a.Mvbdu_sig.variable, upper_bound))
1453-
handler error output
1454-
else (* threshold crossed, convert in bdd *)
1455-
(* let error, (handler, bdd) = memo_identity parameters handler error parameters a in*)
1456-
error, (handler, ([],mvbdu) :: output)
1457-
in
1458-
let error, (handler, output) = aux2 mvbdu None handler error [] in
1459-
let error, memo =
1460-
Hash_2.set parameters error (threshold,mvbdu.Mvbdu_sig.id) output
1461-
handler.Memo_sig.data.boolean_mvbdu_extensional_description_of_mvbdu_with_threshold
1462-
in
1463-
( error,
1464-
( {
1465-
handler with
1466-
Memo_sig.data =
1467-
{
1468-
handler.Memo_sig.data with
1469-
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold = memo;
1470-
};
1471-
},
1472-
output ) )
1473-
in aux1 parameters handler error ~threshold mvbdu
1474-
end
1475-
| None -> error, (handler,[])
1445+
aux3 upper_bound []
1446+
in
1447+
let output =
1448+
List.fold_left
1449+
(fun output head ->
1450+
List.fold_left
1451+
(fun output (tail, b) ->
1452+
((var, head) :: tail, b) :: output)
1453+
output list)
1454+
output head_list
1455+
in
1456+
error, (handler, output)
1457+
in
1458+
aux2 a.Mvbdu_sig.branch_false
1459+
(Some (a.Mvbdu_sig.variable, upper_bound))
1460+
handler error output
1461+
) else
1462+
(* threshold crossed, convert in bdd *)
1463+
(* let error, (handler, bdd) = memo_identity parameters handler error parameters a in*)
1464+
error, (handler, ([], mvbdu) :: output)
1465+
in
1466+
let error, (handler, output) = aux2 mvbdu None handler error [] in
1467+
let error, memo =
1468+
Hash_2.set parameters error
1469+
(threshold, mvbdu.Mvbdu_sig.id)
1470+
output
1471+
handler.Memo_sig.data
1472+
.boolean_mvbdu_extensional_description_of_mvbdu_with_threshold
1473+
in
1474+
( error,
1475+
( {
1476+
handler with
1477+
Memo_sig.data =
1478+
{
1479+
handler.Memo_sig.data with
1480+
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold =
1481+
memo;
1482+
};
1483+
},
1484+
output ) )
1485+
in
1486+
aux1 parameters handler error ~threshold mvbdu
1487+
| None -> error, (handler, [])
14761488

14771489
let print_boolean_mvbdu parameters
14781490
(error : Exception.exceptions_caught_and_uncaught) =

core/KaSa_rep/abstract_domains/mvbdu/boolean_mvbdu.mli

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,10 @@ type memo_tables = {
6666
boolean_mvbdu_extensional_description_of_range_list:
6767
(int * (int option * int option)) list Hash_1.t;
6868
boolean_mvbdu_variables_of_mvbdu: unit List_sig.list Hash_1.t;
69-
boolean_mvbdu_extensional_description_of_mvbdu: (int * int) list list Hash_1.t;
70-
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold: ((int * int) list * bool Mvbdu_sig.mvbdu) list Hash_2.t;
69+
boolean_mvbdu_extensional_description_of_mvbdu:
70+
(int * int) list list Hash_1.t;
71+
boolean_mvbdu_extensional_description_of_mvbdu_with_threshold:
72+
((int * int) list * bool Mvbdu_sig.mvbdu) list Hash_2.t;
7173
}
7274

7375
type unary_memoized_fun
@@ -118,14 +120,14 @@ val extensional_description_of_mvbdu :
118120
Exception_without_parameter.exceptions_caught_and_uncaught
119121
* (handler * (int * int) list list)
120122

121-
val extensional_description_of_mvbdu_with_threshold :
123+
val extensional_description_of_mvbdu_with_threshold :
122124
Remanent_parameters_sig.parameters ->
123125
handler ->
124126
Exception_without_parameter.exceptions_caught_and_uncaught ->
125-
threshold:int ->
127+
threshold:int ->
126128
bool Mvbdu_sig.mvbdu ->
127129
Exception_without_parameter.exceptions_caught_and_uncaught
128-
* (handler * ((int * int) list * bool Mvbdu_sig.mvbdu) list)
130+
* (handler * ((int * int) list * bool Mvbdu_sig.mvbdu) list)
129131

130132
val extensional_description_of_range_list :
131133
'g ->

core/KaSa_rep/abstract_domains/mvbdu/mvbdu_wrapper.ml

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ module type Mvbdu = sig
4444
Exception.exceptions_caught_and_uncaught ->
4545
'input ->
4646
Exception.exceptions_caught_and_uncaught * handler * 'output
47-
47+
4848
type ('input, 'output) unary_with_threshold =
4949
Remanent_parameters_sig.parameters ->
5050
handler ->
51-
Exception.exceptions_caught_and_uncaught ->
52-
threshold:int ->
51+
Exception.exceptions_caught_and_uncaught ->
52+
threshold:int ->
5353
'input ->
5454
Exception.exceptions_caught_and_uncaught * handler * 'output
5555

@@ -204,7 +204,9 @@ module type Mvbdu = sig
204204
(hconsed_range_list, (key * (value option * value option)) list) unary
205205

206206
val extensional_of_mvbdu : (mvbdu, (key * value) list list) unary
207-
val parametric_conditions_of_mvbdu: (mvbdu, ((key * value) list * mvbdu) list) unary_with_threshold
207+
208+
val parametric_conditions_of_mvbdu :
209+
(mvbdu, ((key * value) list * mvbdu) list) unary_with_threshold
208210

209211
val variables_list_of_mvbdu : (mvbdu, hconsed_variables_list) unary
210212
val print : Remanent_parameters_sig.parameters -> mvbdu -> unit
@@ -426,15 +428,14 @@ module Make (_ : Nul) : Mvbdu with type key = int and type value = int = struct
426428
'input ->
427429
Exception.exceptions_caught_and_uncaught * handler * 'output
428430

429-
type ('input, 'output) unary_with_threshold =
431+
type ('input, 'output) unary_with_threshold =
430432
Remanent_parameters_sig.parameters ->
431433
handler ->
432434
Exception.exceptions_caught_and_uncaught ->
433-
threshold:int ->
435+
threshold:int ->
434436
'input ->
435437
Exception.exceptions_caught_and_uncaught * handler * 'output
436438

437-
438439
type ('input1, 'input2, 'output) binary =
439440
Remanent_parameters_sig.parameters ->
440441
handler ->
@@ -584,9 +585,8 @@ module Make (_ : Nul) : Mvbdu with type key = int and type value = int = struct
584585
| error, (handler, a) -> error, handler, a
585586

586587
let lift1__with_threshold ~threshold _string f parameters handler error a =
587-
match f parameters handler error ~threshold a with
588-
| error, (handler, a) -> error, handler, a
589-
588+
match f parameters handler error ~threshold a with
589+
| error, (handler, a) -> error, handler, a
590590

591591
let lift1four buildlist pos f parameters handler error a =
592592
match f parameters error handler a with
@@ -776,10 +776,11 @@ module Make (_ : Nul) : Mvbdu with type key = int and type value = int = struct
776776
lift1__ __POS__ Boolean_mvbdu.extensional_description_of_mvbdu parameters
777777
handler error mvbdu
778778

779-
let parametric_conditions_of_mvbdu parameters handler error ~threshold mvbdu =
780-
lift1__with_threshold ~threshold __POS__ Boolean_mvbdu.extensional_description_of_mvbdu_with_threshold parameters
781-
handler error mvbdu
782-
779+
let parametric_conditions_of_mvbdu parameters handler error ~threshold mvbdu =
780+
lift1__with_threshold ~threshold __POS__
781+
Boolean_mvbdu.extensional_description_of_mvbdu_with_threshold parameters
782+
handler error mvbdu
783+
783784
let print = Boolean_mvbdu.print_mvbdu
784785
let print_association_list = List_algebra.print_association_list
785786
let print_variables_list = List_algebra.print_variables_list

core/KaSa_rep/abstract_domains/mvbdu/mvbdu_wrapper.mli

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ module type Mvbdu = sig
4747
'input ->
4848
Exception.exceptions_caught_and_uncaught * handler * 'output
4949

50-
type ('input, 'output) unary_with_threshold =
50+
type ('input, 'output) unary_with_threshold =
5151
Remanent_parameters_sig.parameters ->
5252
handler ->
53-
Exception.exceptions_caught_and_uncaught ->
54-
threshold:int ->
53+
Exception.exceptions_caught_and_uncaught ->
54+
threshold:int ->
5555
'input ->
5656
Exception.exceptions_caught_and_uncaught * handler * 'output
5757

@@ -207,7 +207,8 @@ module type Mvbdu = sig
207207

208208
val extensional_of_mvbdu : (mvbdu, (key * value) list list) unary
209209

210-
val parametric_conditions_of_mvbdu: (mvbdu, ((key * value) list*mvbdu) list) unary_with_threshold
210+
val parametric_conditions_of_mvbdu :
211+
(mvbdu, ((key * value) list * mvbdu) list) unary_with_threshold
211212

212213
val variables_list_of_mvbdu : (mvbdu, hconsed_variables_list) unary
213214
val print : Remanent_parameters_sig.parameters -> mvbdu -> unit

core/KaSa_rep/reachability_analysis/views_domain.ml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -763,18 +763,18 @@ module Domain = struct
763763
bdu_diff
764764
in
765765
let error, handler, split_list =
766-
Ckappa_sig.Views_bdu.parametric_conditions_of_mvbdu parameters handler error
767-
~threshold:3 (* TO DO *)
768-
bdu_diff
766+
Ckappa_sig.Views_bdu.parametric_conditions_of_mvbdu parameters handler
767+
error ~threshold:3 (* TO DO *)
768+
bdu_diff
769769
in
770-
let _ = split_list in
771-
770+
let _ = split_list in
771+
772772
let dynamic = set_mvbdu_handler handler dynamic in
773773
(*----------------------------------------------------*)
774774
(*print function for extentional description*)
775775
let error =
776776
List.fold_left
777-
(fun error l (* (l,bdd) *)->
777+
(fun error l (* (l,bdd) *) ->
778778
let error, bool =
779779
List.fold_left
780780
(fun (error, bool) (site_type, state) ->

0 commit comments

Comments
 (0)