Tue Jan 28 05:58:35 EST 2020


Actually this is a game changer.  2-way synchronization is more
abstract: no longer necessary to prove that one machine is in time to
pick up output of another machine.

So nothing new, really, but I do have a way to think about things in
the abstract.  This is very different.

That said I do need practice.  I can't just "see" it at the state
machine level.

EDIT: Here's a thing: "select" is the same as "priority cond".
E.g. in async_transmit: wordClock is responded to first.

So let's abstract a synchronous send as an asynchronous send combined
with a synchronous receive of ack.

If it is easier to to have a level transition for the ack, so so, but
add an edge detector somewhere.