Skip to main content
. 2022 Feb 24;8:e823. doi: 10.7717/peerj-cs.823

Algorithm 6. Synchronous product construction between M=RSM,NSFM and A=Q,AP,δ,Q0,F.

1: procedure BUILDSYNCHPRODUCT(M, A)
2:   // Build the MDD of the initial states.
3:   Z0 ← MDD()
4:   for each location q0Q0: do
5:     for each edge e=q0aq in δ: do
6:        Z0Z0AddLoc(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 e=qaq in δ: do
12:     nsf eAddLocX(NSFM ∩ (PSM × SatM(a)), q, q′)
13:    NSFNSFnsfe
14:  end for
15:  // SF: array of MDDs, one entry per accept. set Fi F
16:  for each accepting set Fi F: do
17:     MDDFi{edgeForVar(q) | for each qFi}
18:     SF[i]{MDDFi}
19:  end for
20:  return Z0,NSF,SF
21: end procedure