Skip to content

Commit bc7c2f1

Browse files
author
Jérôme FERET
committed
disabling permanently dead rules
1 parent 29dd144 commit bc7c2f1

9 files changed

Lines changed: 192 additions & 19 deletions

File tree

core/KaSa_rep/export/export.ml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2678,13 +2678,13 @@ functor
26782678
))
26792679
in
26802680
*)
2681-
let permanently_remove l state =
2681+
let permanently_remove l lrules state =
26822682
let state, c_compil = get_c_compilation state in
26832683
let errors = get_errors state in
26842684
let parameters = get_parameters state in
26852685
let state, kappa_handler = get_handler state in
26862686
let map = c_compil.Cckappa_sig.working_set_valuations in
2687-
let errors, l = List.fold_left
2687+
let errors, l = List.fold_left
26882688
(fun (errors, l) elt ->
26892689
let errors, (id,_) = Ckappa_sig.Ws_index_map_and_set.Map.find_default parameters
26902690
errors
@@ -2693,8 +2693,9 @@ functor
26932693
errors, (Ckappa_sig.mvbdu_var_of_guard id (Handler.get_nsites kappa_handler))::l)
26942694
(errors, []) l
26952695
in
2696-
let l = List.sort compare l in
2697-
let state =set_errors errors state in
2696+
2697+
let l = List.sort compare l in
2698+
let state =set_errors errors state in
26982699
let state =
26992700
match Remanent_state.get_reachability_result state with
27002701
| None -> state
@@ -2706,7 +2707,12 @@ functor
27062707
let state = set_errors errors state in
27072708
let errors, (a,b) = Reachability.map_mvbdu
27082709
(fun parameters errors bdu_handler mvbdu -> Ckappa_sig.Views_bdu.mvbdu_definitely_remove parameters bdu_handler errors mvbdu l ) errors (snd (fst x)) (snd x) in
2709-
let state = Remanent_state.set_reachability_result ((fst (fst x),a),b) state in
2710+
let lrules = List.rev_map Ckappa_sig.rule_id_of_int (List.rev lrules) in
2711+
(* let errors, (a,b) = Reachability.remove_rule_list errors a b lrules in *)
2712+
let gb = Reachability.get_global_dynamic_information b in
2713+
let errors, (g,gb) = Analyzer_headers.remove_rule_list errors (fst (fst x)) gb lrules in
2714+
let b = Reachability.set_global_dynamic_information gb b in
2715+
let state = Remanent_state.set_reachability_result ((g,a),b) state in
27102716
set_errors errors state in
27112717
state
27122718
@@ -2810,7 +2816,7 @@ functor
28102816
let state, acc =
28112817
permanently_disable_init_c_id_list diff.Diff.diff_init.removed_elt state acc
28122818
in
2813-
let state = permanently_remove acc state in
2819+
let state = permanently_remove acc diff.Diff.diff_rules.removed_elt state in
28142820
let state, handler = get_handler state in
28152821
let state, cc_compil = get_c_compilation state in
28162822
let errors = get_errors state in

core/KaSa_rep/frontend/preprocess.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ let translate_view parameters error handler (k : Ckappa_sig.c_agent_id)
668668
Misc_sa.const_unit site_dic
669669
in
670670
(match bool, output with
671-
| true, _ ->
671+
| true, _ ->
672672
( error,
673673
( c_interface,
674674
bond_list,

core/KaSa_rep/reachability_analysis/analyzer.ml

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,23 @@ module type Analyzer = sig
9696
dynamic_information
9797
-> Exception.exceptions_caught_and_uncaught * (static_information*
9898
dynamic_information)
99+
100+
val remove_rule_list:
101+
Exception.exceptions_caught_and_uncaught
102+
->
103+
static_information ->
104+
dynamic_information -> Ckappa_sig.c_rule_id list ->
105+
Exception.exceptions_caught_and_uncaught * (static_information*
106+
dynamic_information)
107+
108+
val get_global_dynamic_information :
109+
dynamic_information -> Analyzer_headers.global_dynamic_information
110+
111+
val set_global_dynamic_information :
112+
Analyzer_headers.global_dynamic_information ->
113+
dynamic_information ->
114+
dynamic_information
115+
99116
end
100117

101118
(***************************************************************************)
@@ -455,7 +472,31 @@ module Make (Domain : Composite_domain.Composite_domain) = struct
455472

456473

457474
let map_mvbdu f errors static dynamic =
458-
let error, (static, dynamic) = Domain.map_mvbdu f errors static dynamic in
459-
error, ((static), dynamic)
475+
let parameters = Domain.get_parameters static in
476+
let errors, (static, dynamic) = Domain.map_mvbdu f errors static dynamic in
477+
let handler = get_bdu_handler dynamic in
478+
let errors, handler, restriction_mvbdu = f parameters errors handler (Domain.get_restriction_mvbdu static) in
479+
let errors, handler, working_set_mvbdu = f parameters errors handler (Domain.get_working_set_mvbdu static) in
480+
let static = Domain.set_restriction_mvbdu restriction_mvbdu static in
481+
let static = Domain.set_working_set_mvbdu working_set_mvbdu static in
482+
let dynamic = set_bdu_handler handler dynamic in
483+
errors, (static, dynamic)
484+
485+
let remove_rule_list errors static dynamic l =
486+
let parameters = Domain.get_parameters static in
487+
let handler = get_bdu_handler dynamic in
488+
let errors, handler, mv_false = Ckappa_sig.Views_bdu.mvbdu_false parameters handler errors in
489+
let dynamic = set_bdu_handler handler dynamic in
490+
let map = Domain.get_guard_mvbdus static in
491+
let map =
492+
List.fold_left
493+
(fun map id ->
494+
Ckappa_sig.Rule_setmap.Map.add id mv_false map)
495+
map l in
496+
let static = Domain.set_guard_mvbdus map static in
497+
errors, (static, dynamic)
498+
499+
let get_global_dynamic_information = Domain.get_global_dynamic_information
500+
let set_global_dynamic_information = Domain.set_global_dynamic_information
460501

461502
end

core/KaSa_rep/reachability_analysis/analyzer.mli

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,22 @@ module type Analyzer = sig
9696
dynamic_information
9797
-> Exception.exceptions_caught_and_uncaught * (static_information*
9898
dynamic_information)
99+
100+
val remove_rule_list:
101+
Exception.exceptions_caught_and_uncaught
102+
->
103+
static_information ->
104+
dynamic_information -> Ckappa_sig.c_rule_id list ->
105+
Exception.exceptions_caught_and_uncaught * (static_information*
106+
dynamic_information)
107+
108+
val get_global_dynamic_information :
109+
dynamic_information -> Analyzer_headers.global_dynamic_information
110+
111+
val set_global_dynamic_information :
112+
Analyzer_headers.global_dynamic_information ->
113+
dynamic_information ->
114+
dynamic_information
99115

100116
end
101117

core/KaSa_rep/reachability_analysis/analyzer_headers.ml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ type ('static, 'dynamic) kasa_state =
4444
type initial_state = Cckappa_sig.enriched_init
4545

4646
let get_wake_up_relation static = static.global_wake_up_relation
47+
let set_wake_up_relation global_wake_up_relation static = {static with global_wake_up_relation}
4748
let get_parameter static = static.global_parameter
4849
let get_compilation_information static = static.global_compilation_result
4950

@@ -284,9 +285,15 @@ let set_mvbdu_handler bdu_handler dynamic =
284285
{ dynamic with mvbdu_handler = bdu_handler }
285286

286287
let get_guard_mvbdus static = static.global_guard_mvbdus
288+
let set_guard_mvbdus global_guard_mvbdus static = {static with global_guard_mvbdus}
289+
287290
let get_restriction_mvbdu static = static.global_restriction_mvbdu
288291
let get_working_set_mvbdu static = static.global_working_set_mvbdu
289292

293+
let set_restriction_mvbdu global_restriction_mvbdu static = {static with global_restriction_mvbdu}
294+
let set_working_set_mvbdu global_working_set_mvbdu
295+
static = {static with global_working_set_mvbdu}
296+
290297
let get_nr_guard_parameters static =
291298
Handler.get_nr_guard_parameters (get_kappa_handler static)
292299

@@ -422,6 +429,23 @@ let abstract_away_working_set_vars parameters error bdu_handler mvbdu
422429
in
423430
error, bdu_handler, mvbdu
424431

432+
let remove_rule_list errors static dynamic l =
433+
let parameters = get_parameter static in
434+
let handler = get_mvbdu_handler dynamic in
435+
let errors, handler, mv_false = Ckappa_sig.Views_bdu.mvbdu_false parameters handler errors in
436+
let dynamic = set_mvbdu_handler handler dynamic in
437+
let map = get_guard_mvbdus static in
438+
let map =
439+
List.fold_left
440+
(fun map id ->
441+
Ckappa_sig.Rule_setmap.Map.add id mv_false map)
442+
map l in
443+
let static = set_guard_mvbdus map static in
444+
let map = get_wake_up_relation static in
445+
let errors, map = Common_static.remove_rule_list parameters errors map l in
446+
let static = set_wake_up_relation map static in
447+
errors, (static, dynamic)
448+
425449
module AbstractWS (IntStorageT : Int_storage.Storage with type dimension = int) =
426450
struct
427451
let abstract_away_working_set_vars parameters error bdu_handler global_static
@@ -480,3 +504,5 @@ module AbstractWSMap (MapT : Map_wrapper.S_with_logs) = struct
480504
in
481505
error, bdu_handler, result
482506
end
507+
508+

core/KaSa_rep/reachability_analysis/analyzer_headers.mli

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,15 +229,24 @@ val get_guard_mvbdus :
229229
global_static_information ->
230230
Ckappa_sig.Views_bdu.mvbdu Ckappa_sig.Rule_setmap.Map.t
231231

232+
val set_guard_mvbdus :
233+
Ckappa_sig.Views_bdu.mvbdu Ckappa_sig.Rule_setmap.Map.t -> global_static_information -> global_static_information
234+
232235
val get_restriction_mvbdu :
233236
global_static_information -> Ckappa_sig.Views_bdu.mvbdu
234237

238+
val set_restriction_mvbdu :
239+
Ckappa_sig.Views_bdu.mvbdu -> global_static_information -> global_static_information
240+
235241
val get_nr_guard_parameters :
236242
global_static_information -> Ckappa_sig.c_guard_parameter
237243

238244
val get_working_set_mvbdu :
239245
global_static_information -> Ckappa_sig.Views_bdu.mvbdu
240246

247+
val set_working_set_mvbdu :
248+
Ckappa_sig.Views_bdu.mvbdu -> global_static_information -> global_static_information
249+
241250
val get_nsites : global_static_information -> Ckappa_sig.c_site_name
242251

243252
val get_mvbdu_handler :
@@ -268,6 +277,14 @@ val dummy_side_effects :
268277
Ckappa_sig.c_rule_id ->
269278
Exception.exceptions_caught_and_uncaught * Ckappa_sig.side_effects option
270279

280+
val remove_rule_list:
281+
Exception.exceptions_caught_and_uncaught
282+
->
283+
global_static_information ->
284+
global_dynamic_information -> Ckappa_sig.c_rule_id list ->
285+
Exception.exceptions_caught_and_uncaught * (global_static_information*
286+
global_dynamic_information)
287+
271288
module AbstractWS
272289
(IntStorageT : Int_storage.Storage with type dimension = int) : sig
273290
val abstract_away_working_set_vars :

core/KaSa_rep/reachability_analysis/common_static.ml

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ let scan_rule_set ?patch parameter error kappa_handler compil store_result =
11791179
(******************************************************************)
11801180

11811181
let compute_restriction_mvbdu ?patch_compute_restriction_mvbdu parameters error
1182-
mvbdu_handler nr_guard_parameters nsites compilation =
1182+
mvbdu_handler nr_guard_parameters nsites _compilation =
11831183
let starting_mvbdu, starting =
11841184
match patch_compute_restriction_mvbdu with
11851185
| Some (_, mvbdu, i) -> Some mvbdu, Some i
@@ -1200,33 +1200,33 @@ let compute_restriction_mvbdu ?patch_compute_restriction_mvbdu parameters error
12001200
Ckappa_sig.Views_bdu.mvbdu_of_range_list parameters mvbdu_handler error
12011201
pair_list
12021202
in
1203-
let error, ws_list =
1203+
(* let error, ws_list =
12041204
Ckappa_sig.Ws_index_map_and_set.Map.fold
12051205
(fun ws (guard, _) (error, pair_list) ->
12061206
let error, b =
12071207
Cckappa_sig.is_ws_permanently_disabled parameters error ws compilation
12081208
in
12091209
( error,
12101210
if b then
1211-
( Ckappa_sig.mvbdu_var_of_guard guard nsites,
1211+
(* ( Ckappa_sig.mvbdu_var_of_guard guard nsites,
12121212
( Some Ckappa_sig.dummy_state_index_false,
12131213
Some Ckappa_sig.dummy_state_index_false ) )
1214-
:: pair_list
1214+
::*) pair_list
12151215
else
12161216
pair_list ))
12171217
compilation.Cckappa_sig.working_set_valuations (error, [])
12181218
in
12191219
let error, mvbdu_handler, mvbdu_ws =
12201220
Ckappa_sig.Views_bdu.mvbdu_of_range_list parameters mvbdu_handler error
12211221
(List.rev ws_list)
1222-
in
1223-
let error, mvbdu_handler, mvbdu =
1222+
in*)
1223+
(*let error, mvbdu_handler, mvbdu =*)
12241224
match starting_mvbdu with
12251225
| None -> error, mvbdu_handler, mvbdu
12261226
| Some a ->
12271227
Ckappa_sig.Views_bdu.mvbdu_and parameters mvbdu_handler error a mvbdu
1228-
in
1229-
Ckappa_sig.Views_bdu.mvbdu_and parameters mvbdu_handler error mvbdu_ws mvbdu
1228+
(* in
1229+
Ckappa_sig.Views_bdu.mvbdu_and parameters mvbdu_handler error mvbdu_ws mvbdu*)
12301230

12311231
let collect_guard_mvbdus ?patch_collect_guard_mvbdus parameters error
12321232
mvbdu_handler compilation bdu_restriction nsites =
@@ -1327,3 +1327,23 @@ let get_tuple_of_interest parameters error agent site map =
13271327
with
13281328
| error, None -> error, Ckappa_sig.PairAgentSitesState_map_and_set.Set.empty
13291329
| error, Some s -> error, s
1330+
1331+
let remove_rule_list parameters errors site_to_rules l' =
1332+
let rec aux list l acc =
1333+
match list, l with
1334+
| [], _ -> List.rev acc
1335+
| _, [] -> (List.rev acc) @ list
1336+
| a::b,t::_ when compare a t < 0 -> aux b l (a::acc)
1337+
| a::b,t::q when compare a t = 0 -> aux b q acc
1338+
| a::_,t::q when compare a t > 0 -> aux list q acc
1339+
| _, _ -> assert false
1340+
in
1341+
let diff l l' = aux l l' [] in
1342+
Ckappa_sig.Agent_type_site_nearly_Inf_Int_Int_storage_Imperatif_Imperatif.fold
1343+
parameters errors
1344+
(fun parameters errors i l m ->
1345+
Ckappa_sig.Agent_type_site_nearly_Inf_Int_Int_storage_Imperatif_Imperatif.set parameters errors
1346+
i (diff l l') m)
1347+
site_to_rules
1348+
site_to_rules
1349+

core/KaSa_rep/reachability_analysis/composite_domain.ml

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,15 @@ module type Composite_domain = sig
9999
val get_parameters : static_information -> Remanent_parameters_sig.parameters
100100
val enable_or_disable_rule : (Cckappa_sig.compil, static_information) unary
101101

102-
val map_mvbdu:
102+
103+
val get_restriction_mvbdu: static_information -> Ckappa_sig.Views_bdu.mvbdu
104+
val set_restriction_mvbdu: Ckappa_sig.Views_bdu.mvbdu -> static_information -> static_information
105+
val get_working_set_mvbdu: static_information -> Ckappa_sig.Views_bdu.mvbdu
106+
val set_working_set_mvbdu: Ckappa_sig.Views_bdu.mvbdu -> static_information -> static_information
107+
108+
val get_guard_mvbdus: static_information -> Ckappa_sig.Views_bdu.mvbdu Ckappa_sig.Rule_setmap.Map.t
109+
val set_guard_mvbdus: Ckappa_sig.Views_bdu.mvbdu Ckappa_sig.Rule_setmap.Map.t-> static_information -> static_information
110+
val map_mvbdu:
103111
(Remanent_parameters_sig.parameters
104112
-> Exception.exceptions_caught_and_uncaught -> Ckappa_sig.Views_bdu.handler -> Ckappa_sig.Views_bdu.mvbdu -> Exception.exceptions_caught_and_uncaught * Ckappa_sig.Views_bdu.handler * Ckappa_sig.Views_bdu.mvbdu) ->
105113
Exception.exceptions_caught_and_uncaught
@@ -108,8 +116,11 @@ module type Composite_domain = sig
108116
dynamic_information
109117
-> Exception.exceptions_caught_and_uncaught * (static_information*
110118
dynamic_information)
119+
111120
end
112121

122+
123+
113124
(****************************************************************************)
114125
(*Analyzer is a functor takes a module Domain as its parameters.*)
115126

@@ -133,6 +144,8 @@ module Make (Domain : Analyzer_domain_sig.Domain) = struct
133144
let set_bonds bonds dynamic = { dynamic with bonds }
134145
let get_global_static_information = fst
135146
let get_domain_static_information = snd
147+
148+
let set_global_static_information a (_,b) = (a,b)
136149
let lift f x = f (get_global_static_information x)
137150
let get_parameter static = lift Analyzer_headers.get_parameter static
138151
let get_compil static = lift Analyzer_headers.get_cc_code static
@@ -699,5 +712,31 @@ let map_mvbdu f errors static dynamic =
699712
in
700713
errors, ((fst static, dstatic),
701714
({dynamic with domain}))
702-
715+
716+
let get_restriction_mvbdu static =
717+
Analyzer_headers.get_restriction_mvbdu (get_global_static_information static)
718+
let get_working_set_mvbdu static =
719+
Analyzer_headers.get_working_set_mvbdu (get_global_static_information static)
720+
721+
let get_guard_mvbdus static =
722+
Analyzer_headers.get_guard_mvbdus (get_global_static_information static)
723+
724+
let set_restriction_mvbdu bdu static =
725+
let global = get_global_static_information static in
726+
let global = Analyzer_headers.set_restriction_mvbdu bdu global in
727+
set_global_static_information global static
728+
729+
let set_working_set_mvbdu bdu static =
730+
let global = get_global_static_information static in
731+
let global = Analyzer_headers.set_working_set_mvbdu bdu global in
732+
set_global_static_information global static
733+
734+
735+
736+
let set_guard_mvbdus bdu static =
737+
let global = get_global_static_information static in
738+
let global = Analyzer_headers.set_guard_mvbdus bdu global in
739+
set_global_static_information global static
740+
741+
703742
end

0 commit comments

Comments
 (0)