| 1: procedure BUILDSYNCHPRODUCT(M,
) |
| 2: // Build the MDD of the initial states. |
| 3: Z0 ← MDD() |
| 4: for each location q0 ∈ Q0: do
|
| 5: for each edge
in δ: do
|
| 6: Z0 ← Z0 ∪ AddLoc(SatM(a), q′) |
| 7: end for
|
| 8: end for
|
| 9: // Build the Next State Function M×D |
| 10: NSF ← M×D() |
| 11: for each edge
in δ: do
|
| 12: nsf
e ← AddLocX(NSFM ∩ (PSM × SatM(a)), q, q′) |
| 13: NSF ← NSF ∪ nsfe
|
| 14: end for
|
| 15: //
: array of MDDs, one entry per accept. set Fi ∈
|
| 16: for each accepting set Fi ∈
: do
|
| 17:
|
| 18:
|
| 19: end for
|
| 20: return
|
| 21: end procedure
|