Concurrency Theory: Lecture 7, 08 February 2018 ----------------------------------------------- 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 (equivalently, no element is in conflict with itself) - 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" - Concurrency relation - e co e' if not (e <= e' or e' <= e or e # e') - Configuration C is a set of events, describes a computation - Set of events that have "happened till now" - C is downward closed: e in C and e' <= e implies e' in C as well - C is conflict free: only compatible events can happen together ======================================================================