Variables: 
bool[1]: "a" 
bool[2]: "b" 
bool[3]: "c" 
bool[4]: "d" 

Event graph: 
event[0]: fork: null, #pred: 0, succ: 1 

# process[0]:
event[1]: fork: , pid: 0, #pred: 1, succ: 11 12 13 14 
event[2]: assign: a := true, pid: 0, #pred: 1, succ: 15 
event[3]: assign: b := true, pid: 0, #pred: 1, succ: 15 
event[4]: wait: [a], pid: 0, #pred: 1, succ: 3 
bool deps: 1 
event[5]: assign: c := true, pid: 0, #pred: 1, succ: 15 
event[6]: wait: [b], pid: 0, #pred: 1, succ: 5 
bool deps: 2 
event[7]: assign: d := true, pid: 0, #pred: 1, succ: 15 
event[8]: wait: [c], pid: 0, #pred: 1, succ: 7 
bool deps: 3 
event[9]: fork: , pid: 0, #pred: 1, succ: 2 4 6 8 
event[10]: join: , pid: 0, #pred: 4, succ: 9 
event[11]: assign: a := false, pid: 0, #pred: 1, succ: 10 
event[12]: assign: b := false, pid: 0, #pred: 1, succ: 10 
event[13]: assign: c := false, pid: 0, #pred: 1, succ: 10 
event[14]: assign: d := false, pid: 0, #pred: 1, succ: 10 
event[15]: join: , pid: 0, #pred: 4, succ: 

