At time of writing, the semantics for gapped actions is
anything in X until ->op Y()
=
RUN(union({tock}, diff(X, {Y.out})) /\ Y.out -> SKIP
which is ok in the traces model, but perhaps has an overly strict interpretation in tick-tock: it requires that the module under verification can't refuse any of the events in X. We may need to consider working on a more permissive understanding of gaps that allows refusals (eg using |~|), but need to be wary of preserving time synchronisation across whatever replaces /\.
At time of writing, the semantics for gapped actions is
which is ok in the traces model, but perhaps has an overly strict interpretation in tick-tock: it requires that the module under verification can't refuse any of the events in
X
. We may need to consider working on a more permissive understanding of gaps that allows refusals (eg using|~|
), but need to be wary of preserving time synchronisation across whatever replaces/\
.