@@ -11,15 +11,71 @@ let concretise s sigs =
11
11
(fun trace eid ->
12
12
let event = Poset. get_event_by_id eid s.LinearPoset. pos in
13
13
let step = Event. get_step event in
14
+
15
+ let () = if (! Param. debug_mode) then
16
+ (Format. printf " concret of event\n " ;
17
+ Event. print_event event) in
18
+
14
19
let lhs_state =
15
20
try Transition. get_rhs_state
16
21
(TraceConcret. get_first_transition trace)
17
- with Failure s -> init_state in
18
- let (rhs_state,_) = Replay. do_step sigs lhs_state step in
19
- let trans = Transition. make lhs_state rhs_state in
22
+ with Failure s -> init_state ~with_connected_components: false in
23
+
24
+ let () = if (! Param. debug_mode) then
25
+ (Format. printf " lhs_state\n " ;
26
+ Edges. debug_print (Format. std_formatter)
27
+ (lhs_state.Replay. graph)) in
28
+ let lhs_copy = Transition. copy_state lhs_state in
29
+ let (rhs_state,_) = Replay. do_step sigs lhs_copy step in
30
+
31
+ let () = if (! Param. debug_mode) then
32
+ (Format. printf " rhs_state\n " ;
33
+ Edges. debug_print (Format. std_formatter)
34
+ (rhs_state.Replay. graph)) in
35
+
36
+ let trans = Transition. make lhs_state rhs_state eid in
20
37
21
38
TraceConcret. add_transition trace trans)
22
39
TraceConcret. empty s.LinearPoset. seq in
23
40
trace
24
41
25
- let concret s sigs = concretise (linears s) sigs
42
+ let concret s sigs =
43
+ let trace = concretise (linears s) sigs in
44
+ List. rev trace
45
+
46
+ let context_of_application s1 s2 sigs env =
47
+ let contact_map = Model. contact_map env in
48
+
49
+ let t1 = concret s1 sigs in
50
+ let pt1 = TraceConcret. pattern_trace sigs contact_map t1 in
51
+ let graph1 = TraceConcret. get_last_context pt1 in
52
+
53
+ let t2 = concret s2 sigs in
54
+ let pt2 = TraceConcret. pattern_trace sigs contact_map t2 in
55
+ let graph2 = TraceConcret. get_last_context pt2 in
56
+
57
+ let () = if (! Param. debug_mode) then
58
+ (TraceConcret. print pt1 sigs;TraceConcret. print pt2 sigs) in
59
+ let () = Format. printf " @.trace1 = " ;TraceConcret. print pt1 sigs;
60
+ Format. printf " @.trace2 = " ;TraceConcret. print pt2 sigs;
61
+ Format. printf " @.graph1 = " ; Transition. print_side graph1 sigs ;
62
+ Format. printf " @.graph2 = " ; Transition. print_side graph2 sigs in
63
+ let g1 = List. hd graph1 in
64
+ let g2 = List. hd graph2 in
65
+ let cc_list = Pattern. infs g1 g2 in
66
+ let () = Format. printf " @.the infs =" ;
67
+ List. iter (fun cc -> Pattern. print_cc ~new_syntax: true ~sigs: sigs
68
+ ~with_id: true
69
+ (Format. std_formatter) cc;
70
+ Format. printf " ;; " )
71
+ cc_list in
72
+ let () =
73
+ List. iter
74
+ (fun cc ->
75
+ List. iter (fun m ->
76
+ Format. printf " @.matching %a@." Renaming. print_full m;
77
+ (* let pushout = Pattern.pushout m g1 g2 in
78
+ Format.printf "pushout =";
79
+ Transition.print_side [pushout] sigs*) )
80
+ (Pattern. matchings cc g1)) cc_list in
81
+ ()
0 commit comments