| Input: Petri net model N1=(P1, T1; F1, α1, mi,1, mf,1), and relation matrix LRM[S][S − {s0}]. | | Output: alignment transition system TS = (S, M, T). | | Initialize: S ⟵ ∅, M ⟵ ∅, T ⟵ ∅, Sstart ⟵ {(mi,1, s0)}, Send ⟵ ∅. | (1) | S ⟵ Sstart; n ⟵ 1; | (2) | WHILE (n ≤ |S|) DO | (3) | (mj, sx)⟵S[n]; | (4) | IF(mj = mf,1 AND ) THEN | (5) | Send ⟵ Send ∪ ; | (6) | END IF | | //judge the current state to be the final state; | (7) | FOR (all sy ∈ ∂set(LRMrow)) DO | (8) | IF (LRM[sx][sy] ≠ #) THEN | (9) | M ⟵ M ∪ {(LRM[sx][sy],>>)}; | (10) | S ⟵ S ∪ {(mj, sy)}; | (11) | T ⟵ T ∪ {(mj, sx), (LRM[sx][sy], >>), (mj, sy)}; | (12) | END IF | (13) | END FOR | | //the following log moves, related new states, and transitions that may be generated; | (14) | IF(mj ≠ mf,1) THEN | (15) | FOR(all tk ∈ T1) DO | (16) | IF( ∈ mj) THEN | (17) | M ⟵ M ∪ {(>>, tk)}; | (18) | mj[tk > my; | (19) | S ⟵ S ∪ {(my, sx)}; | (20) | T ⟵ T ∪ {(mj, sx), (>>, tk), (my, sx)}; | (21) | END IF | (22) | END FOR | (23) | END IF | | //the following model moves, related new states, and transitions that may be generated; | (24) | FOR((all sy ∈ ∂set(LRMrow)) AND (all tk ∈ T1)) DO | (25) | IF ( ∈ mj) AND (LRM[sx][sy] = α(tk)) THEN | (26) | M ⟵ M ∪ {(α(tk), tk)}; | (27) | mj [tk > my; | (28) | S ⟵ S ∪ {(my, sy)}; | (29) | T ⟵ T ∪ {(mj, sx), (α(tk), tk), (my, sy)}; | (30) | END IF | (31) | END FOR | | //the following synchronous moves, related new states, and transitions that may be generated; | (32) | n ⟵ n + 1; | (33) | END WHILE | | //delete the cycles with cost 0 in the transition system; | (34) | FOR (all cycles with cost 0 in TS) Do | (35) | Delete all the edges with cost 0; | (36) | FOR(all nodes in the cycle) DO | (37) | FOR(all nodes have no out edge) DO | (38) | Delete nodes; | (39) | Set the parents of nodes to be nodes; | (40) | END FOR | (41) | END FOR | (42) | END FOR | (43) | RETURN TS; |
|