Concurrency Theory: Lecture 7, 07 February 2017 ----------------------------------------------- Constructing a canonical trace from a firing sequence: - By induction build a net N_w = (P_w,T_w,F_w) and a marking M_w for each word w - Let <=> denote trace equivalence. N_w is identical to N_w' for each w'<=> w: each concurrent run generates a canonical net - Causal net: - Each place has at most one incoming and one outgoing edge - F* is a acyclic (partial order) - Transitions that are not ordered are concurrent - If we "throw away" the places in N_w, we get a canonical partial order representation of the trace [w] - Let <= denote trace prefix. [w] <= [w'] iff the N_w is a subset, componentwise, of N_{w'} Given two firing sequences uv and uw, the nets N_uv and N_uw will have identical prefixes for N_u Take the union of N_w for all firing sequences w - Like the computation tree of a sequential system - Occurrence net - Each place has at most one incoming edge - F* is acyclic - If t and t' share an input place, t and t' are in conflict - Conflict is "inherited" via F - Any two elements in conflict have disjoint futures - Occurrence net describes "branching behaviour" of a net - If we "throw away" the places in the occurrence net, we get an event structure ES = (E, <=, #) - E is a set of events - <= is a partial order - # is the conflict relation, inherited via <=: e # e' and e' <= e'' implies e # e" ======================================================================