The current implementation of the initial set generator assumes that only the first fragment in an operand need be considered. However, it is possible (via, for instance, constructing false guards or an opt) for there to be a trigger where the first fragment contributes nothing to the initial set, and the second fragment should (but currently doesn't).
There are three ways to improve this:
Constrain UntilFragments so they have a structure that agrees with this requirement (and other things, like the fact that having a trigger with multiple events seldom does what people want it to) - this would be my preferred way to do this;
Make a much more sophisticated initial set builder that progresses down an operand until it reaches a fragment that cannot possibly not contribute to the initial set (but this would complicate the semantics immensely!);
Make all events in a trigger become the initial set.
The current implementation of the initial set generator assumes that only the first fragment in an operand need be considered. However, it is possible (via, for instance, constructing false guards or an
opt
) for there to be a trigger where the first fragment contributes nothing to the initial set, and the second fragment should (but currently doesn't).There are three ways to improve this:
UntilFragment
s so they have a structure that agrees with this requirement (and other things, like the fact that having a trigger with multiple events seldom does what people want it to) - this would be my preferred way to do this;This should be fairly easily unit-testable, too.