Skip to content

Commit 6e2bb5e

Browse files
author
Ioana
committed
debug example
1 parent deedf7f commit 6e2bb5e

File tree

5 files changed

+66
-56
lines changed

5 files changed

+66
-56
lines changed

concret.ml

Lines changed: 46 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ let print_morphisms compose2 =
3939
Format.printf "@.compose2 = ";
4040
List.iter (fun (a,b)-> Format.printf "(%d,%d) " a b) compose2
4141

42-
4342
(*********** functions on morphisms as lists *)
4443
let list_to_renaming ls =
4544
match
@@ -119,58 +118,74 @@ let compose_matchings mg1 m1 n1 m2' n2 m2 mg2 =
119118
let partial1 =
120119
List.filter (fun (a1,b1) -> List.mem b1 (domain list_m2')) compose1 in
121120
let () = if (!Param.debug_mode) then print_morphs2 compose1 partial1 in
121+
(* let comp1 = compose partial1 list_m2' in
122+
let () = print_morphisms comp1 in
123+
let comp2 = compose comp1 n2 in
124+
let () = print_morphisms comp2 in
125+
let comp3 = compose comp2 m2 in
126+
let () = print_morphisms comp3 in
127+
let () = print_morphisms mg2 in *)
122128
let compose2 =
123129
compose (compose (compose (compose partial1 list_m2') n2) m2) mg2 in
124130
let () = if (!Param.debug_mode) then print_morphisms compose2 in
125131
list_to_renaming compose2
126132

127-
let print_conflict = function
128-
| (i1,s1,l1,int1)::(i2,s2,l2,int2)::_ ->
129-
if (int1!= int2) then
130-
Format.printf
131-
"on internal state of %d:%d=%d and %d:%d=%d" i1 s1 int1 i2 s2 int2
132-
else (Format.printf "on link of %d:%d " i1 s1 ;
133-
(match l1 with
134-
| Pattern.Free -> Format.printf " free "
135-
| Pattern.Link (n1,ns1) -> Format.printf "(%d, %d)" n1 ns1
136-
| _ -> ());
137-
Format.printf "and %d:%d " i2 s2;
138-
(match l2 with
139-
| Pattern.Free -> Format.printf " free "
140-
| Pattern.Link (n1,ns1) -> Format.printf "(%d, %d)" n1 ns1
141-
| _ -> ()))
142-
| _ ->
143-
raise (ExceptDefn.Internal_Error("conflict must return two nodes"))
133+
let print_conflict sigs (cc1,i1,cc2,i2,s,internal) =
134+
let () =
135+
Format.printf "no context for inhibition due to conflict on cc1 = ";
136+
Lib.print_cc sigs cc1;
137+
Format.printf " and cc2 = "; Lib.print_cc sigs cc2;
138+
Format.printf " due to conflict on " in
139+
let () =
140+
if internal then Format.printf "internal states of "
141+
else Format.printf "links of " in
142+
Format.printf "%d of cc1 and %d of cc2 on site %d @." i1 i2 s
144143

145144
let build_context
146145
sigs domain (n1,cc1,id1) (n2,cc2,id2) graph1 graph2 m1 m2 m2' inf=
147146
let find_cc n m graph =
148-
(* let (n',_) = List.find (fun (_,i) -> (i=id)) n in*)
147+
(*graph:(morphism,pattern.cc,pattern.id) list*)
149148
let (rule_id,abstract_id) = List.hd n in
150149
let (_,concrete_id) = List.find (fun (i,_) -> (i=abstract_id)) m in
151-
let (mg,g,_) =
152-
List.find
150+
let cc_of_graph,rest =
151+
List.partition
153152
(fun (m,_,_) -> List.exists (fun (c,_) -> c=concrete_id) m) graph in
154-
(n,mg,g) in
155-
let (n1',mg1,g1) = find_cc n1 m1 graph1 in
156-
let (n2',mg2,g2) = find_cc n2 m2 graph2 in
153+
match cc_of_graph with
154+
| (mg,g,_)::[] -> (n,mg,g,rest)
155+
| _ ->
156+
raise (ExceptDefn.Internal_Error("only one cc should match in graph")) in
157+
let (n1',mg1,g1,rest1) = find_cc n1 m1 graph1 in
158+
let (n2',mg2,g2,rest2) = find_cc n2 m2 graph2 in
159+
(*let () =
160+
Format.printf "build_context @.@.";
161+
Lib.print_cc sigs g1;Lib.print_cc sigs g2;
162+
Lib.print_cc sigs cc1;Lib.print_cc sigs cc2 in*)
157163
let m = compose_matchings mg1 m1 n1' m2' n2' m2 mg2 in
158164
(* let () = if (!Param.debug_mode) then print_build_context sigs m in *)
159165
let context = Pattern.merge_on_inf domain m g1 g2 in
160166
match context with
161-
| (None,conflict) ->
162-
let () =
163-
if (!Param.verb) then
164-
(Format.printf "no context for inhibition due to conflict ";
165-
print_conflict conflict) in
166-
false
167+
| (None,Some conflict) ->
168+
let () = if (!Param.verb) then print_conflict sigs conflict in
169+
false
170+
| (None,None) ->
171+
raise (ExceptDefn.Internal_Error("no pushout must return conflict"))
167172
| (Some c,_) ->
168173
let () =
169174
if (!Param.verb) then
170175
(Format.printf "witness context for inhibition = ";
171176
Lib.print_cc sigs c;
177+
List.iter
178+
(fun (_,cc,_) ->
179+
Pattern.print_cc
180+
~new_syntax:true ~sigs ~with_id:true (Format.std_formatter) cc)
181+
rest1;
182+
List.iter
183+
(fun (_,cc,_) ->
184+
Pattern.print_cc
185+
~new_syntax:true ~sigs ~with_id:true (Format.std_formatter) cc)
186+
rest2;
172187
Format.printf "@. due to inf = ";
173-
Lib.print_cc sigs inf) in
188+
Lib.print_cc sigs inf; Format.printf "@.") in
174189
true
175190

176191
let all_possible lhs1 lhs2 sigs domain graph1 graph2 m1 m2 actions =
@@ -215,7 +230,6 @@ let all_possible lhs1 lhs2 sigs domain graph1 graph2 m1 m2 actions =
215230
let context_of_application e1 s1 e2 s2 sigs env =
216231
let env' = Model.domain env in
217232
let domain = Pattern.PreEnv.of_env env' in
218-
219233
let (graph1,lhs1,m1,actions) = Poset.concrete env env' sigs e1 s1 in
220234
let (graph2,lhs2,m2,_) = Poset.concrete env env' sigs e2 s2 in
221235

formulas.ml

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -304,23 +304,18 @@ let denotations (_,_,domain as m) fm =
304304
vals
305305
(List.filter (fun d -> domain_match_sort d "Poset") domain)
306306
| [] ->
307-
if (holds m valuation fm) then
308-
let () =
309-
if (!Param.verb) then
310-
(Format.printf "true on valuation :@.";
311-
List.iter
312-
(fun v -> Format.printf "%s = " v;
313-
Domain.print_domain (valuation(v))) (free_var fm);
314-
Format.printf "@.@.") in
307+
let () =
308+
if (!Param.verb) then
309+
(Format.printf "on valuation :@.";
310+
List.iter
311+
(fun v -> Format.printf "%s = " v;
312+
Domain.print_domain (valuation(v))) (free_var fm);
313+
Format.printf "@.") in
314+
if holds m valuation fm then
315+
let () = if (!Param.verb) then Format.printf "holds true @.@." in
315316
(valuation::vals)
316317
else
317-
let () =
318-
if (!Param.verb) then
319-
(Format.printf "@. false on valuation :@.";
320-
List.iter
321-
(fun v -> Format.printf "%s = " v;
322-
Domain.print_domain (valuation(v))) (free_var fm);
323-
Format.printf "@.@.") in
318+
let () = if (!Param.verb) then Format.printf "holds false @.@." in
324319
vals in
325320
let default_valuation x = raise (ExceptDefn.Uninterpreted_Variable(x)) in
326321
denote_var (free_var fm) default_valuation []

poset.ml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ let prepare_for_morphism p =
9191
{kappa = false;filename = p.filename;events;prec_1;prec_star=None;inhibit;}
9292

9393
let sort p =
94-
let rev_inhibit = List.map (fun (a,b) -> (b,a)) p.inhibit in
95-
let to_order = p.prec_1 @ rev_inhibit in
94+
(*let rev_inhibit = List.map (fun (a,b) -> (b,a)) p.inhibit in*)
95+
let to_order = p.prec_1 @ p.inhibit in
9696
let rec sort_pairs = function
9797
| [] -> []
9898
| ls ->
@@ -195,7 +195,7 @@ let make sigs env replay_state =
195195
let (env',list) = Replay.cc_of_state replay_state env in
196196
(env',list)
197197

198-
let concretise s linear sigs =
198+
let concretise env s linear sigs =
199199
let () = if (!Param.debug_mode) then
200200
(Format.printf "concretise linear poset :";
201201
List.iter (fun i -> Format.printf "%d " i) linear) in
@@ -212,18 +212,19 @@ let concretise s linear sigs =
212212
let (env',graph) = make sigs env rhs_state in
213213
let trace' = TraceConcret.add_transition sigs trace graph eid in
214214
(trace',rhs_state,env'))
215-
(TraceConcret.empty,init_state,(Pattern.PreEnv.empty sigs))
215+
(TraceConcret.empty,init_state,(Pattern.PreEnv.of_env env))
216216
linear in
217217
(List.rev trace)
218218

219-
let concrete model env sigs e p = match (Event.concrete e) with
219+
let concrete model env sigs e p =
220+
match (Event.concrete e) with
220221
None ->
221222
let past_e = past e p in
222-
let linear = linearisation past_e in
223-
let t = concretise past_e linear sigs in
224223
let () =
225224
if (!Param.debug_mode) then
226225
(Format.printf "past of e@.";print_poset past_e) in
226+
let linear = linearisation past_e in
227+
let t = concretise env past_e linear sigs in
227228
let lhs_graph = TraceConcret.get_last_lhs_graph t in
228229
let graph = match lhs_graph with
229230
| None ->

posets_test/test3/c0.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"nodes":[[13,["Obs","Apy",[[["Is_Free",{"agent":{"id":1833,"type":0},"site":2}],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},0],["Is_Here",{"id":1833,"type":0}]]],{"id":336,"time":9.685577604775046,"event":4007}]],[12,["Rule",3,{"tests":[[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},0],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Here",{"id":2036,"type":2}],["Is_Bound_to",{"agent":{"id":2036,"type":2},"site":0},{"agent":{"id":1833,"type":0},"site":2}]]],"actions":[["Free",{"agent":{"id":2036,"type":2},"site":0}],["Free",{"agent":{"id":1833,"type":0},"site":2}]]},{"id":335,"time":9.685577604775046,"event":4007}]],[11,["Rule",5,{"tests":[[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},1],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Here",{"id":2036,"type":2}],["Is_Bound_to",{"agent":{"id":2036,"type":2},"site":0},{"agent":{"id":1833,"type":0},"site":2}],["Is_Here",{"id":1963,"type":1}],["Is_Bound_to",{"agent":{"id":1963,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Mod_internal",{"agent":{"id":1833,"type":0},"site":0},0]]},{"id":302,"time":9.209427748659548,"event":3929}]],[10,["Rule",0,{"tests":[[["Is_Here",{"id":1963,"type":1}],["Is_Free",{"agent":{"id":1963,"type":1},"site":0}]],[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},1],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Free",{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Bind",{"agent":{"id":1963,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]},{"id":193,"time":7.123196678201288,"event":3623}]],[9,["Rule",7,{"tests":[[["Is_Here",{"id":1833,"type":0}],["Is_Here",{"id":910,"type":1}],["Is_Bound_to",{"agent":{"id":910,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}],["Is_Here",{"id":1844,"type":2}],["Is_Bound_to",{"agent":{"id":1844,"type":2},"site":1},{"agent":{"id":910,"type":1},"site":1}]]],"actions":[["Free",{"agent":{"id":910,"type":1},"site":0}],["Free",{"agent":{"id":1833,"type":0},"site":1}]]},{"id":92,"time":4.733225988126882,"event":3299}]],[7,["Rule",1,{"tests":[[["Is_Here",{"id":2036,"type":2}],["Is_Free",{"agent":{"id":2036,"type":2},"site":0}]],[["Is_Here",{"id":1833,"type":0}],["Is_Free",{"agent":{"id":1833,"type":0},"site":2}],["Is_Here",{"id":910,"type":1}],["Is_Bound_to",{"agent":{"id":910,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Bind",{"agent":{"id":2036,"type":2},"site":0},{"agent":{"id":1833,"type":0},"site":2}]]},{"id":0,"time":0.5157215022070692,"event":2600}]],[8,["Rule",6,{"tests":[[["Is_Here",{"id":1844,"type":2}],["Is_Free",{"agent":{"id":1844,"type":2},"site":1}]],[["Is_Here",{"id":910,"type":1}],["Is_Free",{"agent":{"id":910,"type":1},"site":1}]]],"actions":[["Bind",{"agent":{"id":1844,"type":2},"site":1},{"agent":{"id":910,"type":1},"site":1}]]},{"id":35,"time":2.6277817503951044,"event":3070}]],[6,["Rule",0,{"tests":[[["Is_Here",{"id":910,"type":1}],["Is_Free",{"agent":{"id":910,"type":1},"site":0}]],[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},1],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Free",{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Bind",{"agent":{"id":910,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]},{"id":-1,"time":0.023673981155164017,"event":601}]],[5,["Init",[["Create",{"id":2036,"type":2},[[0],[1]]],["Free",{"agent":{"id":2036,"type":2},"site":1}],["Free",{"agent":{"id":2036,"type":2},"site":0}]]]],[4,["Init",[["Create",{"id":1963,"type":1},[[0],[1]]],["Free",{"agent":{"id":1963,"type":1},"site":1}],["Free",{"agent":{"id":1963,"type":1},"site":0}]]]],[3,["Init",[["Create",{"id":1844,"type":2},[[0],[1]]],["Free",{"agent":{"id":1844,"type":2},"site":1}],["Free",{"agent":{"id":1844,"type":2},"site":0}]]]],[2,["Init",[["Create",{"id":1833,"type":0},[[0,1],[1],[2]]],["Free",{"agent":{"id":1833,"type":0},"site":2}],["Free",{"agent":{"id":1833,"type":0},"site":1}],["Free",{"agent":{"id":1833,"type":0},"site":0}],["Mod_internal",{"agent":{"id":1833,"type":0},"site":0},1]]]],[1,["Init",[["Create",{"id":910,"type":1},[[0],[1]]],["Free",{"agent":{"id":910,"type":1},"site":1}],["Free",{"agent":{"id":910,"type":1},"site":0}]]]]],"cause":[{"from":12,"to":13},{"from":11,"to":12},{"from":10,"to":11},{"from":7,"to":11},{"from":9,"to":10},{"from":4,"to":10},{"from":8,"to":9},{"from":6,"to":9},{"from":3,"to":8},{"from":1,"to":8},{"from":6,"to":7},{"from":5,"to":7},{"from":2,"to":6},{"from":1,"to":6}],"inhibit":[]}
1+
{"nodes":[[13,["Obs","Apy",[[["Is_Free",{"agent":{"id":1833,"type":0},"site":2}],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},0],["Is_Here",{"id":1833,"type":0}]]],{"id":336,"time":9.685577604775046,"event":4007}]],[12,["Rule",3,{"tests":[[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},0],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Here",{"id":2036,"type":2}],["Is_Bound_to",{"agent":{"id":2036,"type":2},"site":0},{"agent":{"id":1833,"type":0},"site":2}]]],"actions":[["Free",{"agent":{"id":2036,"type":2},"site":0}],["Free",{"agent":{"id":1833,"type":0},"site":2}]]},{"id":335,"time":9.685577604775046,"event":4007}]],[11,["Rule",5,{"tests":[[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},1],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Here",{"id":2036,"type":2}],["Is_Bound_to",{"agent":{"id":2036,"type":2},"site":0},{"agent":{"id":1833,"type":0},"site":2}],["Is_Here",{"id":1963,"type":1}],["Is_Bound_to",{"agent":{"id":1963,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Mod_internal",{"agent":{"id":1833,"type":0},"site":0},0]]},{"id":302,"time":9.209427748659548,"event":3929}]],[10,["Rule",0,{"tests":[[["Is_Here",{"id":1963,"type":1}],["Is_Free",{"agent":{"id":1963,"type":1},"site":0}]],[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},1],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Free",{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Bind",{"agent":{"id":1963,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]},{"id":193,"time":7.123196678201288,"event":3623}]],[9,["Rule",7,{"tests":[[["Is_Here",{"id":1833,"type":0}],["Is_Here",{"id":910,"type":1}],["Is_Bound_to",{"agent":{"id":910,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}],["Is_Here",{"id":1844,"type":2}],["Is_Bound_to",{"agent":{"id":1844,"type":2},"site":1},{"agent":{"id":910,"type":1},"site":1}]]],"actions":[["Free",{"agent":{"id":910,"type":1},"site":0}],["Free",{"agent":{"id":1833,"type":0},"site":1}]]},{"id":92,"time":4.733225988126882,"event":3299}]],[7,["Rule",1,{"tests":[[["Is_Here",{"id":2036,"type":2}],["Is_Free",{"agent":{"id":2036,"type":2},"site":0}]],[["Is_Here",{"id":1833,"type":0}],["Is_Free",{"agent":{"id":1833,"type":0},"site":2}],["Is_Here",{"id":910,"type":1}],["Is_Bound_to",{"agent":{"id":910,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Bind",{"agent":{"id":2036,"type":2},"site":0},{"agent":{"id":1833,"type":0},"site":2}]]},{"id":0,"time":0.5157215022070692,"event":2600}]],[8,["Rule",6,{"tests":[[["Is_Here",{"id":1844,"type":2}],["Is_Free",{"agent":{"id":1844,"type":2},"site":1}]],[["Is_Here",{"id":910,"type":1}],["Is_Free",{"agent":{"id":910,"type":1},"site":1}]]],"actions":[["Bind",{"agent":{"id":1844,"type":2},"site":1},{"agent":{"id":910,"type":1},"site":1}]]},{"id":35,"time":2.6277817503951044,"event":3070}]],[6,["Rule",0,{"tests":[[["Is_Here",{"id":910,"type":1}],["Is_Free",{"agent":{"id":910,"type":1},"site":0}]],[["Is_Here",{"id":1833,"type":0}],["Has_Internal",{"agent":{"id":1833,"type":0},"site":0},1],["Is_Free",{"agent":{"id":1833,"type":0},"site":0}],["Is_Free",{"agent":{"id":1833,"type":0},"site":1}]]],"actions":[["Bind",{"agent":{"id":910,"type":1},"site":0},{"agent":{"id":1833,"type":0},"site":1}]]},{"id":-1,"time":0.023673981155164017,"event":601}]],[5,["Init",[["Create",{"id":2036,"type":2},[[0],[1]]],["Free",{"agent":{"id":2036,"type":2},"site":1}],["Free",{"agent":{"id":2036,"type":2},"site":0}]]]],[4,["Init",[["Create",{"id":1963,"type":1},[[0],[1]]],["Free",{"agent":{"id":1963,"type":1},"site":1}],["Free",{"agent":{"id":1963,"type":1},"site":0}]]]],[3,["Init",[["Create",{"id":1844,"type":2},[[0],[1]]],["Free",{"agent":{"id":1844,"type":2},"site":1}],["Free",{"agent":{"id":1844,"type":2},"site":0}]]]],[2,["Init",[["Create",{"id":1833,"type":0},[[0,1],[1],[2]]],["Free",{"agent":{"id":1833,"type":0},"site":2}],["Free",{"agent":{"id":1833,"type":0},"site":1}],["Free",{"agent":{"id":1833,"type":0},"site":0}],["Mod_internal",{"agent":{"id":1833,"type":0},"site":0},1]]]],[1,["Init",[["Create",{"id":910,"type":1},[[0],[1]]],["Free",{"agent":{"id":910,"type":1},"site":1}],["Free",{"agent":{"id":910,"type":1},"site":0}]]]]],"cause":[{"from":12,"to":13},{"from":11,"to":12},{"from":10,"to":11},{"from":7,"to":11},{"from":9,"to":10},{"from":4,"to":10},{"from":8,"to":9},{"from":6,"to":9},{"from":3,"to":8},{"from":1,"to":8},{"from":6,"to":7},{"from":5,"to":7},{"from":2,"to":6},{"from":1,"to":6}],"inhibit":[{"from":7,"to":9}]}

script_test3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
./main.native posets_test/test3/c0.json posets_test/test3/c1.json posets_test/test3/c2.json posets_test/test3/c3.json posets_test/test3/c4.json posets_test/test3/c5.json -env posets_test/test3/env.json -f posets_test/test3/test1
1+
./main.native posets_test/test3/c0.json posets_test/test3/c1.json posets_test/test3/c2.json posets_test/test3/c3.json posets_test/test3/c4.json posets_test/test3/c5.json -env posets_test/test3/env.json -f posets_test/test3/test2

0 commit comments

Comments
 (0)