same trace with fixed-per-event delays (using defaults) 
everything except times stamps should match because 
there is little exposed concurrency 
event queue:
check queue:
	time	eid	pid	event
	0	0	1	null
a : bool a = 0
b : bool b = 0
c : bool c = 0
e : bool e = 0
step 5 
	0	0	1	null
	1	1	0	
	11	27	0	c := false
	11	28	0	e := false
	11	26	0	
event queue:
check queue:
	time	eid	pid	event
	12	2	0	
a : bool a = 0
b : bool b = 0
c : bool c = 0
e : bool e = 0
time: 11
event[25]: wait: [e], pid: 0, #pred: 1, succ: 24 
bool deps: 4 
source: [e]
status: (currently not subscribed to its dependencies)
in queue: no
in check queue: no
All event subscriptions:
step 1 
	12	2	0	
event[25]: wait: [e], pid: 0, #pred: 1, succ: 24 
bool deps: 4 
source: [e]
status: (currently not subscribed to its dependencies)
in queue: no
in check queue: yes
All event subscriptions:
step 1 
	12	18	0	[~e]
All event subscriptions:
event queue:
check queue:
	time	eid	pid	event
	12	25	0	[e]
	13	17	0	
step 4 
	13	17	0	
	23	15	0	a := false
	23	16	0	b := false
	23	14	0	
event 25 still subscribed to `e' 
event queue:
check queue:
	time	eid	pid	event
	33	13	0	e := true
event[25]: wait: [e], pid: 0, #pred: 1, succ: 24 
bool deps: 4 
source: [e]
status: (blocked and subscribed to its dependencies)
in queue: no
in check queue: no
All event subscriptions:
bool[4]: "e" : 25 
	33	13	0	e := true
should wake up event 25, now in queue 
event queue:
	time	eid	pid	event
	33	25	0	[e]
check queue:
	43	12	0	a := false
event[25]: wait: [e], pid: 0, #pred: 1, succ: 24 
bool deps: 4 
source: [e]
status: (currently not subscribed to its dependencies)
in queue: yes
in check queue: no
All event subscriptions:
should have no more subscriptions 
event[24]: select: [ a -> ... [] b -> ... ], pid: 0, #pred: 1, succ: 22 23 
bool deps: 1 2 
source: deterministic: {
  a -> c := c
  b -> c := c
}
status: (currently not subscribed to its dependencies)
in queue: no
in check queue: no
step 4 
	33	25	0	[e]
	43	12	0	a := false
	53	11	0	b := false
	63	10	0	a := false
event queue:
check queue:
	time	eid	pid	event
	73	9	0	b := false
event 24 should be subscribed to `a' and `b' 
event[24]: select: [ a -> ... [] b -> ... ], pid: 0, #pred: 1, succ: 22 23 
bool deps: 1 2 
source: deterministic: {
  a -> c := c
  b -> c := c
}
status: (blocked and subscribed to its dependencies)
in queue: no
in check queue: no
All event subscriptions:
bool[1]: "a" : 24 
bool[2]: "b" : 24 
a : bool a = 0
b : bool b = 0
c : bool c = 0
e : bool e = 1
step 2 
	73	9	0	b := false
	74	8	0	[ c -> ... [] else -> ... ]
time: 74
event queue:
check queue:
	time	eid	pid	event
	84	7	0	b := false
event[24]: select: [ a -> ... [] b -> ... ], pid: 0, #pred: 1, succ: 22 23 
bool deps: 1 2 
source: deterministic: {
  a -> c := c
  b -> c := c
}
status: (blocked and subscribed to its dependencies)
in queue: no
in check queue: no
All event subscriptions:
bool[1]: "a" : 24 
bool[2]: "b" : 24 
	84	7	0	b := false
now a+ should release event 24 
	94	6	0	a := true
event queue:
	time	eid	pid	event
	94	24	0	[ a -> ... [] b -> ... ]
check queue:
	94	3	0	null
event[24]: select: [ a -> ... [] b -> ... ], pid: 0, #pred: 1, succ: 22 23 
bool deps: 1 2 
source: deterministic: {
  a -> c := c
  b -> c := c
}
status: (currently not subscribed to its dependencies)
in queue: yes
in check queue: no
All event subscriptions:
step 3 
	94	24	0	[ a -> ... [] b -> ... ]
	94	3	0	null
	104	22	0	c := c
event queue:
check queue:
	time	eid	pid	event
	104	21	0	null
step 
	104	21	0	null
event queue:
check queue:
	time	eid	pid	event
	114	20	0	c := ~c
event 18 should now be blocked on `e' 
event[18]: wait: [~e], pid: 0, #pred: 1, succ: 17 
bool deps: 4 
source: [~e]
status: (blocked and subscribed to its dependencies)
in queue: no
in check queue: no
All event subscriptions:
bool[4]: "e" : 18 
step 2 
	114	20	0	c := ~c
	124	19	0	e := false
time: 124
event 18 should be released 
event queue:
	time	eid	pid	event
	124	18	0	[~e]
check queue:
	124	25	0	[e]
event[18]: wait: [~e], pid: 0, #pred: 1, succ: 17 
bool deps: 4 
source: [~e]
status: (currently not subscribed to its dependencies)
in queue: yes
in check queue: no
step 2 
	124	18	0	[~e]
	125	17	0	
All event subscriptions:
bool[4]: "e" : 25 
now event 25 is waiting for handshake on `e' 
step 3 
	135	15	0	a := false
	135	16	0	b := false
	135	14	0	
event queue:
check queue:
	time	eid	pid	event
	145	13	0	e := true
time: 135
now we just let it run a while... 
