@@ -17,10 +17,10 @@ let empty_poset =
17
17
let get_events_from_poset p = p.events
18
18
19
19
let get_event_by_id i p =
20
- List. find (fun e -> (Event. get_id e) = i) (get_events_from_poset p)
20
+ List. find (fun e -> (Event. id e) = i) (get_events_from_poset p)
21
21
22
22
let get_events_by_id_list ls p =
23
- List. filter (fun e -> List. mem (Event. get_id e) ls) p.events
23
+ List. filter (fun e -> List. mem (Event. id e) ls) p.events
24
24
25
25
let print_poset p =
26
26
Format. printf " events (id, label) : \n " ;
@@ -41,15 +41,15 @@ let edges_of_json json =
41
41
let e2 = member " to" json |> to_int in
42
42
(e1,e2)) json
43
43
44
- let read_poset_from_file file sigs =
44
+ let read_poset_from_file file env =
45
45
let json = Yojson.Basic. from_file file in
46
46
let open Yojson.Basic.Util in
47
47
let nodes = json |> member " nodes" |> to_list in
48
48
let edges_cause = json |> member " cause" |> to_list in
49
49
let edges_inhibit = json |> member " inhibit" |> to_list in
50
50
{ kappa = true ;
51
51
filename = Some file;
52
- events = List. mapi (fun i l -> Event. nodes_of_json sigs l) nodes;
52
+ events = List. mapi (fun i l -> Event. nodes_of_json env l) nodes;
53
53
prec_1 = edges_of_json edges_cause;
54
54
prec_star = None ;
55
55
inhibit = edges_of_json edges_inhibit}
@@ -70,7 +70,7 @@ let intro p =
70
70
let intros =
71
71
List. filter
72
72
(fun e ->
73
- not (List. exists (fun (i1 ,i2 ) -> (Event. get_id e) = i2) p.prec_1))
73
+ not (List. exists (fun (i1 ,i2 ) -> (Event. id e) = i2) p.prec_1))
74
74
p.events in
75
75
let () = if (! Param. debug_mode)
76
76
then (Format. printf " intro events of poset: \n " ;
@@ -80,16 +80,16 @@ let intro p =
80
80
get_poset_of_events(intros)
81
81
82
82
(* specialised to the case of one obs - the last one in the list *)
83
- let remove_obs p =
84
- if (p.kappa) then
85
- ( let obs_id = List. length p.events in
86
- let events =
87
- List. filter ( fun e -> not (( Event. get_id e) = obs_id)) p.events in
88
- let prec_1 = List. filter ( fun ( e1 ,e2 ) -> not (e2 = obs_id) ) p.prec_1 in
89
- let inhibit = List. filter (fun ( e1 , e2 ) -> not (e2 = obs_id) ) p.inhibit in
90
- { kappa = false ; filename = p.filename; events; prec_1;
91
- prec_star = None ; inhibit; })
92
- else raise ( ExceptDefn. Internal_Error ( " should not be possible " ))
83
+ let obs p =
84
+ if (p.kappa) then List. length p.events
85
+ else raise ( ExceptDefn. Internal_Error ( " obs of non kappa poset " ))
86
+
87
+ let remove_event p eid =
88
+ let neither ( e1 ,e2 ) = not ((e1 = eid) || (e2 = eid)) in
89
+ let events = List. filter (fun e -> not (( Event. id e) = eid) ) p.events in
90
+ let prec_1 = List. filter neither p. prec_1 in
91
+ let inhibit = List. filter neither p. inhibit in
92
+ {kappa = false ;filename = p.filename; events; prec_1;prec_star = None ;inhibit}
93
93
94
94
let sort_prec ls =
95
95
let rec verif_sort = function
@@ -102,29 +102,28 @@ let sort_prec ls =
102
102
103
103
(* id of events in interval [0,length(events)] *)
104
104
let get_enriched p =
105
- let arr = Array. make ((List. length p.events)+ 1 ) [] in
106
- let sorted = sort_prec p.prec_1 in
107
- let () =
108
- List. iter
109
- (fun (e1 ,e2 ) ->
110
- let l2 =
111
- List. fold_left
112
- (fun acc e -> if (List. mem e acc) then acc else e::acc)
113
- arr.(e1) arr.(e2) in
114
- arr.(e1) < - e2::l2) sorted in
115
- arr
105
+ match p.prec_star with
106
+ | Some enr -> enr
107
+ | None ->
108
+ let arr = Array. make ((List. length p.events)+ 1 ) [] in
109
+ let sorted = sort_prec p.prec_1 in
110
+ let () =
111
+ List. iter
112
+ (fun (e1 ,e2 ) ->
113
+ let l2 =
114
+ List. fold_left
115
+ (fun acc e -> if (List. mem e acc) then acc else e::acc)
116
+ arr.(e1) arr.(e2) in
117
+ arr.(e1) < - e2::l2) sorted in
118
+ let () = p.prec_star < - Some arr in
119
+ arr
116
120
117
121
let check_prec_1 e1 e2 p =
118
122
(List. mem e1 p.events)&& (List. mem e2 p.events)&&
119
123
(List. mem (e1.Event. event_id, e2.Event. event_id) p.prec_1)
120
124
121
125
let check_prec_star e1 e2 p =
122
- let enrich = match p.prec_star with
123
- | None ->
124
- let enr = get_enriched p in
125
- let () = p.prec_star < - Some enr in
126
- enr
127
- | Some enr -> enr in
126
+ let enrich = get_enriched p in
128
127
let () =
129
128
if (! Param. debug_mode) then
130
129
(Format. printf " check_prec_star \n " ;
@@ -135,3 +134,19 @@ let check_prec_star e1 e2 p =
135
134
Format. printf " %d =< %d" (e1.Event. event_id) (e2.Event. event_id) ) in
136
135
(List. mem e1 p.events)&& (List. mem e2 p.events)&&
137
136
(List. mem (e2.Event. event_id) enrich.(e1.Event. event_id))
137
+
138
+ (* check it !!*)
139
+ let past e p =
140
+ let enrich = get_enriched p in
141
+ let eid = Event. id e in
142
+ let events = get_events_by_id_list enrich.(eid) p in
143
+ let list_mem (e1 ,e2 ) =
144
+ (List. mem e1 enrich.(eid))&& (List. mem e1 enrich.(eid)) in
145
+ let prec_1 = List. filter list_mem p.prec_1 in
146
+ let inhibit = List. filter list_mem p.inhibit in
147
+ {kappa = false ;filename = p.filename; events; prec_1;prec_star= None ;inhibit}
148
+
149
+ let same_poset p1 p2 =
150
+ match (p1.filename,p2.filename) with
151
+ | (None , _ ) | (_ , None) -> false
152
+ | (Some f1 , Some f2 ) -> ((String. compare f1 f2)= 0 )
0 commit comments