Fairness of dynamic concurrent runs #
This file adds the first fairness layer on top of Concurrent.ProcessOver.Run.
The key design choice is that fairness is phrased in terms of stable
Tickets, not raw frontier events. This matters because the concrete event
type available at one residual process state need not even be comparable with
the event type at a later state, while a ticket is meant to name the same
scheduling obligation across time and across different presentations of the
same protocol.
The closed-world Process API is recovered as a specialization of these
generic definitions.
Eventually P means that P holds at some time index.
Instances For
EventuallyAlways P means that from some time onward, P keeps holding
forever.
Instances For
InfinitelyOften P means that P holds at arbitrarily late time
indices.
Instances For
enabledAt ticketed run ticket n means that at time n, there exists some
complete transcript of the current process step whose stable ticket is
ticket.
Instances For
firedAt ticketed run ticket n means that the actual transcript chosen by the
run at time n has stable ticket ticket.
Instances For
Weak fairness for one ticket: if the ticket is continuously enabled from some point onward, then it fires infinitely often.
Instances For
Strong fairness for one ticket: if the ticket is enabled infinitely often, then it is fired infinitely often.
Instances For
A run is weakly fair when every ticket is weakly fair.
Instances For
A run is strongly fair when every ticket is strongly fair.
Instances For
The actually fired ticket at time n is always enabled at time n.