Skip to content

Patterns #

This section provides you with an overview of all the patterns that are currently supported in Hanfor. For each pattern, we give a description in the natural-language-style specification language, its undesired behavior represented as a Duration Calculus formula, and its Phase Event Automaton representation.

Ultimate revision on Github that corresponds to this documention: e334897bb9b02a6ec9123dd0e3e43aaaa5bf07a0

Absence #

Absence Globally #

Globally, it is never the case that "R" holds

Countertraces #

true;⌈R⌉;true

Phase Event Automata #

Positive Examples: Absence - Globally

Absence Before #

Before "P", it is never the case that "R" holds

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;true

Phase Event Automata #

Positive Examples: Absence - Before

Absence After #

After "P", it is never the case that "R" holds

Countertraces #

true;⌈P⌉;true;⌈R⌉;true

Phase Event Automata #

Positive Examples: Absence - After

Absence Between #

Between "P" and "Q", it is never the case that "R" holds

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Absence - Between

Absence AfterUntil #

After "P" until "Q", it is never the case that "R" holds

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;true

Phase Event Automata #

Positive Examples: Absence - AfterUntil

ConstrainedChain #

ConstrainedChain Before #

Before "P", it is always the case that if "R" holds, then "S" eventually holds and is succeeded by "T" where "U" does not hold between "S" and "T"

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;⌈(!P && !S)⌉;⌈P⌉;true
⌈!P⌉;⌈(!P && R)⌉;⌈!P⌉;⌈(!P && S)⌉;⌈(!P && !T)⌉;⌈P⌉;true
⌈!P⌉;⌈(!P && R)⌉;⌈!P⌉;⌈(!P && S)⌉;⌈(!P && !T)⌉;⌈(!P && (!T && U))⌉;⌈!P⌉;⌈(!P && T)⌉;⌈!P⌉;⌈P⌉;true

Phase Event Automata #

ConstrainedChain Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" eventually holds and is succeeded by "T" where "U" does not hold between "S" and "T"

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈(!Q && !T)⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈(!Q && !T)⌉;⌈(!Q && (!T && U))⌉;⌈!Q⌉;⌈(!Q && T)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

ConstrainedChain Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" eventually holds and is succeeded by "T" where "U" does not hold between "S" and "T"

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈(!Q && !T)⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈(!Q && !T)⌉;⌈(!Q && (!T && U))⌉;⌈!Q⌉;⌈(!Q && T)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

DurationBoundL #

DurationBoundL Globally #

Globally, it is always the case that once "R" becomes satisfied, it holds for at least "5" time units

Countertraces #

true;⌈!R⌉;⌈R⌉ ∧ ℓ < 5;⌈!R⌉;true

Phase Event Automata #

DurationBoundL Before #

Before "P", it is always the case that once "R" becomes satisfied, it holds for at least "5" time units

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && R)⌉ ∧ ℓ < 5;⌈(!P && !R)⌉;true

Phase Event Automata #

DurationBoundL After #

After "P", it is always the case that once "R" becomes satisfied, it holds for at least "5" time units

Countertraces #

true;⌈P⌉;true;⌈!R⌉;⌈R⌉ ∧ ℓ < 5;⌈!R⌉;true

Phase Event Automata #

DurationBoundL Between #

Between "P" and "Q", it is always the case that once "R" becomes satisfied, it holds for at least "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉ ∧ ℓ < 5;⌈(!Q && !R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

DurationBoundL AfterUntil #

After "P" until "Q", it is always the case that once "R" becomes satisfied, it holds for at least "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉ ∧ ℓ < 5;⌈(!Q && !R)⌉;true

Phase Event Automata #

DurationBoundU #

DurationBoundU Globally #

Globally, it is always the case that once "R" becomes satisfied, it holds for less than "5" time units

Countertraces #

true;⌈R⌉ ∧ ℓ ≥ 5;true

Phase Event Automata #

Positive Examples: DurationBoundU - Globally

DurationBoundU Before #

Before "P", it is always the case that once "R" becomes satisfied, it holds for less than "5" time units

Countertraces #

⌈!P⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;true

Phase Event Automata #

Positive Examples: DurationBoundU - Before

DurationBoundU After #

After "P", it is always the case that once "R" becomes satisfied, it holds for less than "5" time units

Countertraces #

true;⌈P⌉;true;⌈R⌉ ∧ ℓ ≥ 5;true

Phase Event Automata #

Positive Examples: DurationBoundU - After

DurationBoundU Between #

Between "P" and "Q", it is always the case that once "R" becomes satisfied, it holds for less than "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: DurationBoundU - Between

DurationBoundU AfterUntil #

After "P" until "Q", it is always the case that once "R" becomes satisfied, it holds for less than "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;true

Phase Event Automata #

Positive Examples: DurationBoundU - AfterUntil

EdgeResponseBoundL2 #

EdgeResponseBoundL2 Globally #

Globally, it is always the case that once "R" becomes satisfied, "S" holds for at least "5" time units

Countertraces #

true;⌈!R⌉;⌈R⌉;⌈S⌉ ∧ ℓ < 5;⌈!S⌉;true
true;⌈!R⌉;⌈(R && !S)⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundL2 - Globally

EdgeResponseBoundL2 Before #

Before "P", it is always the case that once "R" becomes satisfied, "S" holds for at least "5" time units

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && R)⌉;⌈(!P && S)⌉ ∧ ℓ < 5;⌈(!P && !S)⌉;true
⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && (R && !S))⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundL2 - Before

EdgeResponseBoundL2 After #

After "P", it is always the case that once "R" becomes satisfied, "S" holds for at least "5" time units

Countertraces #

true;⌈P⌉;true;⌈!R⌉;⌈R⌉;⌈S⌉ ∧ ℓ < 5;⌈!S⌉;true
true;⌈P⌉;true;⌈!R⌉;⌈(R && !S)⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundL2 - After

EdgeResponseBoundL2 Between #

Between "P" and "Q", it is always the case that once "R" becomes satisfied, "S" holds for at least "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈(!Q && S)⌉ ∧ ℓ < 5;⌈(!Q && !S)⌉;⌈!Q⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && (R && !S))⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

EdgeResponseBoundL2 AfterUntil #

After "P" until "Q", it is always the case that once "R" becomes satisfied, "S" holds for at least "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈(!Q && S)⌉ ∧ ℓ < 5;⌈(!Q && !S)⌉;true
true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && (R && !S))⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundL2 - AfterUntil

EdgeResponseBoundU1 #

EdgeResponseBoundU1 Globally #

Globally, it is always the case that once "R" becomes satisfied and holds for at most "5" time units, then "S" holds afterwards

Countertraces #

true;⌈!R⌉;⌈R⌉ ∧ ℓ ≤ 5;⌈(!R && !S)⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundU1 - Globally

EdgeResponseBoundU1 Before #

Before "P", it is always the case that once "R" becomes satisfied and holds for at most "5" time units, then "S" holds afterwards

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;⌈(!P && (!R && !S))⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundU1 - Before

EdgeResponseBoundU1 After #

After "P", it is always the case that once "R" becomes satisfied and holds for at most "5" time units, then "S" holds afterwards

Countertraces #

true;⌈P⌉;true;⌈!R⌉;⌈R⌉ ∧ ℓ ≤ 5;⌈(!R && !S)⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundU1 - After

EdgeResponseBoundU1 Between #

Between "P" and "Q", it is always the case that once "R" becomes satisfied and holds for at most "5" time units, then "S" holds afterwards

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉ ∧ ℓ ≤ 5;⌈(!Q && (!R && !S))⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundU1 - Between

EdgeResponseBoundU1 AfterUntil #

After "P" until "Q", it is always the case that once "R" becomes satisfied and holds for at most "5" time units, then "S" holds afterwards

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉ ∧ ℓ ≤ 5;⌈(!Q && (!R && !S))⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseBoundU1 - AfterUntil

EdgeResponseDelay #

EdgeResponseDelay Globally #

Globally, it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units

Countertraces #

true;⌈!R⌉;⌈(R && !S)⌉;⌈!S⌉ ∧ ℓ > 5;true

Phase Event Automata #

Positive Examples: EdgeResponseDelay - Globally

EdgeResponseDelay Before #

Before "P", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && (R && !S))⌉;⌈(!P && !S)⌉ ∧ ℓ > 5;true

Phase Event Automata #

EdgeResponseDelay After #

After "P", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units

Countertraces #

true;⌈P⌉;true;⌈!R⌉;⌈(R && !S)⌉;⌈!S⌉ ∧ ℓ > 5;true

Phase Event Automata #

Positive Examples: EdgeResponseDelay - After

EdgeResponseDelay Between #

Between "P" and "Q", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true;⌈Q⌉;true

Phase Event Automata #

EdgeResponseDelay AfterUntil #

After "P" until "Q", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true

Phase Event Automata #

EdgeResponseDelayBoundL2 #

EdgeResponseDelayBoundL2 Globally #

Globally, it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈!R⌉;⌈(R && !S)⌉;⌈!S⌉ ∧ ℓ > 5;true
true;⌈!R⌉;⌈R⌉;⌈true⌉ ∧ ℓ < 5;⌈S⌉ ∧ ℓ < 10;⌈!S⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseDelayBoundL2 - Globally

EdgeResponseDelayBoundL2 Before #

Before "P", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units for at least "10" time units

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && (R && !S))⌉;⌈(!P && !S)⌉ ∧ ℓ > 5;true
⌈!P⌉;⌈(!P && !R)⌉;⌈(!P && R)⌉;⌈!P⌉ ∧ ℓ < 5;⌈(!P && S)⌉ ∧ ℓ < 10;⌈(!P && !S)⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseDelayBoundL2 - Before

EdgeResponseDelayBoundL2 After #

After "P", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈P⌉;true;⌈!R⌉;⌈(R && !S)⌉;⌈!S⌉ ∧ ℓ > 5;true
true;⌈P⌉;true;⌈!R⌉;⌈R⌉;⌈true⌉ ∧ ℓ < 5;⌈S⌉ ∧ ℓ < 10;⌈!S⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseDelayBoundL2 - After

EdgeResponseDelayBoundL2 Between #

Between "P" and "Q", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈!Q⌉ ∧ ℓ < 5;⌈(!Q && S)⌉ ∧ ℓ < 10;⌈(!Q && !S)⌉;true;⌈Q⌉;true

Phase Event Automata #

EdgeResponseDelayBoundL2 AfterUntil #

After "P" until "Q", it is always the case that once "R" becomes satisfied, "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true
true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈!Q⌉ ∧ ℓ < 5;⌈(!Q && S)⌉ ∧ ℓ < 10;⌈(!Q && !S)⌉;true

Phase Event Automata #

Positive Examples: EdgeResponseDelayBoundL2 - AfterUntil

ExistenceBoundU #

ExistenceBoundU Globally #

Globally, transitions to states in which "R" holds occur at most twice

Countertraces #

true;⌈R⌉;⌈!R⌉;⌈R⌉;⌈!R⌉;⌈R⌉;true

Phase Event Automata #

ExistenceBoundU Before #

Before "P", transitions to states in which "R" holds occur at most twice

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;⌈(!P && !R)⌉;⌈(!P && R)⌉;⌈(!P && !R)⌉;⌈(!P && R)⌉;true

Phase Event Automata #

ExistenceBoundU After #

After "P", transitions to states in which "R" holds occur at most twice

Countertraces #

true;⌈P⌉;true;⌈R⌉;⌈!R⌉;⌈R⌉;⌈!R⌉;⌈R⌉;true

Phase Event Automata #

ExistenceBoundU Between #

Between "P" and "Q", transitions to states in which "R" holds occur at most twice

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

ExistenceBoundU AfterUntil #

After "P" until "Q", transitions to states in which "R" holds occur at most twice

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;⌈(!Q && !R)⌉;⌈(!Q && R)⌉;true

Phase Event Automata #

Initialization #

Initialization Globally #

Globally, it is always the case that initially "R" holds

Countertraces #

⌈!R⌉;true

Phase Event Automata #

Initialization Before #

Before "P", it is always the case that initially "R" holds

Countertraces #

⌈(!P && !R)⌉;true

Phase Event Automata #

Initialization After #

After "P", it is always the case that initially "R" holds

Countertraces #

true;⌈P⌉;⌈!R⌉;true

Phase Event Automata #

Positive Examples: Initialization - After

Initialization Between #

Between "P" and "Q", it is always the case that initially "R" holds

Countertraces #

true;⌈(P && !Q)⌉;⌈(!Q && !R)⌉;true;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Initialization - Between

Initialization AfterUntil #

After "P" until "Q", it is always the case that initially "R" holds

Countertraces #

true;⌈P⌉;⌈(!Q && !R)⌉;true

Phase Event Automata #

Positive Examples: Initialization - AfterUntil

Invariance #

Invariance Globally #

Globally, it is always the case that if "R" holds, then "S" holds as well

Countertraces #

true;⌈(R && !S)⌉;true

Phase Event Automata #

Positive Examples: Invariance - Globally

Invariance Before #

Before "P", it is always the case that if "R" holds, then "S" holds as well

Countertraces #

⌈!P⌉;⌈(!P && (R && !S))⌉;true

Phase Event Automata #

Positive Examples: Invariance - Before

Invariance After #

After "P", it is always the case that if "R" holds, then "S" holds as well

Countertraces #

true;⌈P⌉;true;⌈(R && !S)⌉;true

Phase Event Automata #

Positive Examples: Invariance - After

Invariance Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" holds as well

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && (R && !S))⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Invariance - Between

Invariance AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" holds as well

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && (R && !S))⌉;true

Phase Event Automata #

Positive Examples: Invariance - AfterUntil

InvarianceBoundL2 #

InvarianceBoundL2 Globally #

Globally, it is always the case that if "R" holds, then "S" holds for at least "5" time units

Countertraces #

true;⌈R⌉;⌈true⌉ ∧ ℓ < 5;⌈!S⌉;true

Phase Event Automata #

Positive Examples: InvarianceBoundL2 - Globally

InvarianceBoundL2 Before #

Before "P", it is always the case that if "R" holds, then "S" holds for at least "5" time units

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;⌈!P⌉ ∧ ℓ < 5;⌈(!P && !S)⌉;true

Phase Event Automata #

Positive Examples: InvarianceBoundL2 - Before

InvarianceBoundL2 After #

After "P", it is always the case that if "R" holds, then "S" holds for at least "5" time units

Countertraces #

true;⌈P⌉;true;⌈R⌉;⌈true⌉ ∧ ℓ < 5;⌈!S⌉;true

Phase Event Automata #

Positive Examples: InvarianceBoundL2 - After

InvarianceBoundL2 Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" holds for at least "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉ ∧ ℓ < 5;⌈(!Q && !S)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: InvarianceBoundL2 - Between

InvarianceBoundL2 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" holds for at least "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉ ∧ ℓ < 5;⌈(!Q && !S)⌉;true

Phase Event Automata #

Positive Examples: InvarianceBoundL2 - AfterUntil

Persistence #

Persistence Globally #

Globally, it is always the case that if "R" holds, then it holds persistently

Countertraces #

true;⌈R⌉;⌈!R⌉;true

Phase Event Automata #

Persistence Before #

Before "P", it is always the case that if "R" holds, then it holds persistently

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;⌈(!P && !R)⌉;true

Phase Event Automata #

Persistence After #

After "P", it is always the case that if "R" holds, then it holds persistently

Countertraces #

true;⌈P⌉;true;⌈R⌉;⌈!R⌉;true

Phase Event Automata #

Persistence Between #

Between "P" and "Q", it is always the case that if "R" holds, then it holds persistently

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Persistence AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then it holds persistently

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !R)⌉;true

Phase Event Automata #

Precedence #

Precedence Globally #

Globally, it is always the case that if "R" holds, then "S" previously held

Countertraces #

⌈!S⌉;⌈R⌉;true

Phase Event Automata #

Positive Examples: Precedence - Globally

Precedence Before #

Before "P", it is always the case that if "R" holds, then "S" previously held

Countertraces #

⌈(!P && !S)⌉;⌈(!P && R)⌉;true

Phase Event Automata #

Positive Examples: Precedence - Before

Precedence After #

After "P", it is always the case that if "R" holds, then "S" previously held

Countertraces #

true;⌈P⌉;⌈!S⌉;⌈R⌉;true

Phase Event Automata #

Positive Examples: Precedence - After

Precedence Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" previously held

Countertraces #

true;⌈(P && (!Q && !S))⌉;⌈(!Q && !S)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Precedence - Between

Precedence AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" previously held

Countertraces #

true;⌈P⌉;⌈(!Q && !S)⌉;⌈(!Q && R)⌉;true

Phase Event Automata #

Positive Examples: Precedence - AfterUntil

PrecedenceChain12 #

PrecedenceChain12 Globally #

Globally, it is always the case that if "R" holds and is succeeded by "S", then "T" previously held

Countertraces #

⌈!T⌉;⌈R⌉;true;⌈S⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain12 - Globally

PrecedenceChain12 Before #

Before "P", it is always the case that if "R" holds and is succeeded by "S", then "T" previously held

Countertraces #

⌈(!P && !T)⌉;⌈(!P && R)⌉;⌈!P⌉;⌈(!P && S)⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain12 - Before

PrecedenceChain12 After #

After "P", it is always the case that if "R" holds and is succeeded by "S", then "T" previously held

Countertraces #

true;⌈P⌉;⌈!T⌉;⌈R⌉;true;⌈S⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain12 - After

PrecedenceChain12 Between #

Between "P" and "Q", it is always the case that if "R" holds and is succeeded by "S", then "T" previously held

Countertraces #

true;⌈(P && !Q)⌉;⌈(!Q && !T)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain12 - Between

PrecedenceChain12 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds and is succeeded by "S", then "T" previously held

Countertraces #

true;⌈P⌉;⌈(!Q && !T)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain12 - AfterUntil

PrecedenceChain21 #

PrecedenceChain21 Globally #

Globally, it is always the case that if "R" holds, then "S" previously held and was preceded by "T"

Countertraces #

⌈!T⌉;⌈R⌉;true
⌈!S⌉;⌈R⌉;true
⌈!T⌉;⌈(S && !T)⌉;⌈!T⌉;⌈(!S && T)⌉;⌈!S⌉;⌈R⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain21 - Globally

PrecedenceChain21 Before #

Before "P", it is always the case that if "R" holds, then "S" previously held and was preceded by "T"

Countertraces #

⌈(!P && !T)⌉;⌈(!P && R)⌉;true
⌈(!P && !S)⌉;⌈(!P && R)⌉;true
⌈(!P && !T)⌉;⌈(!P && (S && !T))⌉;⌈(!P && !T)⌉;⌈(!P && (!S && T))⌉;⌈(!P && !S)⌉;⌈(!P && R)⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain21 - Before

PrecedenceChain21 After #

After "P", it is always the case that if "R" holds, then "S" previously held and was preceded by "T"

Countertraces #

true;⌈P⌉;⌈!T⌉;⌈R⌉;true
true;⌈P⌉;⌈!S⌉;⌈R⌉;true
true;⌈P⌉;⌈!T⌉;⌈(S && !T)⌉;⌈!T⌉;⌈(!S && T)⌉;⌈!S⌉;⌈R⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain21 - After

PrecedenceChain21 Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" previously held and was preceded by "T"

Countertraces #

true;⌈(P && !Q)⌉;⌈(!Q && !T)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈(!Q && !S)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈(!Q && !T)⌉;⌈(!Q && (S && !T))⌉;⌈(!Q && !T)⌉;⌈(!Q && (!S && T))⌉;⌈(!Q && !S)⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

PrecedenceChain21 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" previously held and was preceded by "T"

Countertraces #

true;⌈P⌉;⌈(!Q && !T)⌉;⌈(!Q && R)⌉;true
true;⌈P⌉;⌈(!Q && !S)⌉;⌈(!Q && R)⌉;true
true;⌈P⌉;⌈(!Q && !T)⌉;⌈(!Q && (S && !T))⌉;⌈(!Q && !T)⌉;⌈(!Q && (!S && T))⌉;⌈(!Q && !S)⌉;⌈(!Q && R)⌉;true

Phase Event Automata #

Positive Examples: PrecedenceChain21 - AfterUntil

ReccurrenceBoundL #

ReccurrenceBoundL Globally #

Globally, it is always the case that "R" holds at least every "5" time units

Countertraces #

true;⌈!R⌉ ∧ ℓ > 5;true

Phase Event Automata #

ReccurrenceBoundL Before #

Before "P", it is always the case that "R" holds at least every "5" time units

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉ ∧ ℓ > 5;true

Phase Event Automata #

ReccurrenceBoundL After #

After "P", it is always the case that "R" holds at least every "5" time units

Countertraces #

true;⌈P⌉;true;⌈!R⌉ ∧ ℓ > 5;true

Phase Event Automata #

ReccurrenceBoundL Between #

Between "P" and "Q", it is always the case that "R" holds at least every "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉ ∧ ℓ > 5;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: ReccurrenceBoundL - Between

ReccurrenceBoundL AfterUntil #

After "P" until "Q", it is always the case that "R" holds at least every "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉ ∧ ℓ > 5;true

Phase Event Automata #

Response #

Response Before #

Before "P", it is always the case that if "R" holds, then "S" eventually holds

Countertraces #

⌈!P⌉;⌈(!P && (R && !S))⌉;⌈(!P && !S)⌉;⌈P⌉;true

Phase Event Automata #

Positive Examples: Response - Before

Response Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" eventually holds

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Response - Between

Response AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" eventually holds

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Response - AfterUntil

ResponseBoundL1 #

ResponseBoundL1 Globally #

Globally, it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards

Countertraces #

true;⌈R⌉ ∧ ℓ ≥ 5;⌈!S⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL1 - Globally

ResponseBoundL1 Before #

Before "P", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards

Countertraces #

⌈!P⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;⌈(!P && !S)⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL1 - Before

ResponseBoundL1 After #

After "P", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards

Countertraces #

true;⌈P⌉;true;⌈R⌉ ∧ ℓ ≥ 5;⌈!S⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL1 - After

ResponseBoundL1 Between #

Between "P" and "Q", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && !S)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL1 - Between

ResponseBoundL1 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && !S)⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL1 - AfterUntil

ResponseBoundL12 #

ResponseBoundL12 Globally #

Globally, it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards for at least "10" time units

Countertraces #

true;⌈R⌉ ∧ ℓ ≥ 5;⌈S⌉ ∧ ℓ <₀ 10;⌈!S⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL12 - Globally

ResponseBoundL12 Before #

Before "P", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards for at least "10" time units

Countertraces #

⌈!P⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;⌈(!P && S)⌉ ∧ ℓ <₀ 10;⌈(!P && !S)⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL12 - Before

ResponseBoundL12 After #

After "P", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards for at least "10" time units

Countertraces #

true;⌈P⌉;⌈R⌉ ∧ ℓ ≥ 5;⌈S⌉ ∧ ℓ <₀ 10;⌈!S⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL12 - After

ResponseBoundL12 Between #

Between "P" and "Q", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards for at least "10" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && S)⌉ ∧ ℓ <₀ 10;⌈(!Q && !S)⌉;true;⌈Q⌉;true

Phase Event Automata #

ResponseBoundL12 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds for at least "5" time units, then "S" holds afterwards for at least "10" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && S)⌉ ∧ ℓ <₀ 10;⌈(!Q && !S)⌉;true

Phase Event Automata #

Positive Examples: ResponseBoundL12 - AfterUntil

ResponseChain12 #

ResponseChain12 Before #

Before "P", it is always the case that if "R" holds, then "S" eventually holds and is succeeded by "T"

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;⌈(!P && !S)⌉;⌈P⌉;true
⌈!P⌉;⌈(!P && R)⌉;⌈!P⌉;⌈(!P && S)⌉;⌈(!P && !T)⌉;⌈P⌉;true

Phase Event Automata #

Positive Examples: ResponseChain12 - Before

ResponseChain12 Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" eventually holds and is succeeded by "T"

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈(!Q && !T)⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: ResponseChain12 - Between

ResponseChain12 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" eventually holds and is succeeded by "T"

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉;⌈Q⌉;true
true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈!Q⌉;⌈(!Q && S)⌉;⌈(!Q && !T)⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: ResponseChain12 - AfterUntil

ResponseDelay #

ResponseDelay Globally #

Globally, it is always the case that if "R" holds, then "S" holds after at most "5" time units

Countertraces #

true;⌈(R && !S)⌉;⌈!S⌉ ∧ ℓ > 5;true

Phase Event Automata #

Positive Examples: ResponseDelay - Globally

ResponseDelay Before #

Before "P", it is always the case that if "R" holds, then "S" holds after at most "5" time units

Countertraces #

⌈!P⌉;⌈(!P && (R && !S))⌉;⌈(!P && !S)⌉ ∧ ℓ > 5;true

Phase Event Automata #

ResponseDelay After #

After "P", it is always the case that if "R" holds, then "S" holds after at most "5" time units

Countertraces #

true;⌈P⌉;true;⌈(R && !S)⌉;⌈!S⌉ ∧ ℓ > 5;true

Phase Event Automata #

Positive Examples: ResponseDelay - After

ResponseDelay Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" holds after at most "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

ResponseDelay AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" holds after at most "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && (R && !S))⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true

Phase Event Automata #

ResponseDelayBoundL1 #

ResponseDelayBoundL1 Globally #

Globally, it is always the case that if "R" holds for at least "5" time units, then "S" holds after at most "10" time units

Countertraces #

true;⌈R⌉ ∧ ℓ ≥ 5;⌈!S⌉ ∧ ℓ > 10;true

Phase Event Automata #

Positive Examples: ResponseDelayBoundL1 - Globally

ResponseDelayBoundL1 Before #

Before "P", it is always the case that if "R" holds for at least "5" time units, then "S" holds after at most "10" time units

Countertraces #

⌈!P⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;⌈(!P && !S)⌉ ∧ ℓ > 10;true

Phase Event Automata #

ResponseDelayBoundL1 After #

After "P", it is always the case that if "R" holds for at least "5" time units, then "S" holds after at most "10" time units

Countertraces #

true;⌈P⌉;true;⌈R⌉ ∧ ℓ ≥ 5;⌈!S⌉ ∧ ℓ > 10;true

Phase Event Automata #

Positive Examples: ResponseDelayBoundL1 - After

ResponseDelayBoundL1 Between #

Between "P" and "Q", it is always the case that if "R" holds for at least "5" time units, then "S" holds after at most "10" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && !S)⌉ ∧ ℓ > 10;true;⌈Q⌉;true

Phase Event Automata #

ResponseDelayBoundL1 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds for at least "5" time units, then "S" holds after at most "10" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && !S)⌉ ∧ ℓ > 10;true

Phase Event Automata #

ResponseDelayBoundL2 #

ResponseDelayBoundL2 Globally #

Globally, it is always the case that if "R" holds, then "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈R⌉;⌈!S⌉ ∧ ℓ > 5;true
true;⌈R⌉;⌈!S⌉ ∧ ℓ <₀ 5;⌈S⌉ ∧ ℓ < 10;⌈!S⌉;true

Phase Event Automata #

Positive Examples: ResponseDelayBoundL2 - Globally

ResponseDelayBoundL2 Before #

Before "P", it is always the case that if "R" holds, then "S" holds after at most "5" time units for at least "10" time units

Countertraces #

⌈!P⌉;⌈(!P && R)⌉;⌈(!P && !S)⌉ ∧ ℓ > 5;true
⌈!P⌉;⌈(!P && R)⌉;⌈(!P && !S)⌉ ∧ ℓ <₀ 5;⌈(!P && S)⌉ ∧ ℓ < 10;⌈(!P && !S)⌉;true

Phase Event Automata #

Positive Examples: ResponseDelayBoundL2 - Before

ResponseDelayBoundL2 After #

After "P", it is always the case that if "R" holds, then "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈P⌉;true;⌈R⌉;⌈!S⌉ ∧ ℓ > 5;true
true;⌈P⌉;true;⌈R⌉;⌈!S⌉ ∧ ℓ <₀ 5;⌈S⌉ ∧ ℓ < 10;⌈!S⌉;true

Phase Event Automata #

Positive Examples: ResponseDelayBoundL2 - After

ResponseDelayBoundL2 Between #

Between "P" and "Q", it is always the case that if "R" holds, then "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true;⌈Q⌉;true
true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉ ∧ ℓ <₀ 5;⌈(!Q && S)⌉ ∧ ℓ < 10;⌈(!Q && !S)⌉;true;⌈Q⌉;true

Phase Event Automata #

ResponseDelayBoundL2 AfterUntil #

After "P" until "Q", it is always the case that if "R" holds, then "S" holds after at most "5" time units for at least "10" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉ ∧ ℓ > 5;true
true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉;⌈(!Q && !S)⌉ ∧ ℓ <₀ 5;⌈(!Q && S)⌉ ∧ ℓ < 10;⌈(!Q && !S)⌉;true

Phase Event Automata #

Positive Examples: ResponseDelayBoundL2 - AfterUntil

TriggerResponseBoundL1 #

TriggerResponseBoundL1 Globally #

Globally, it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds

Countertraces #

true;⌈R⌉ ∧ ℓ ≥ 5;⌈(R && (S && !T))⌉;true

Phase Event Automata #

Positive Examples: TriggerResponseBoundL1 - Globally

TriggerResponseBoundL1 Before #

Before "P", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds

Countertraces #

⌈!P⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;⌈(!P && (R && (S && !T)))⌉;true

Phase Event Automata #

Positive Examples: TriggerResponseBoundL1 - Before

TriggerResponseBoundL1 After #

After "P", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds

Countertraces #

true;⌈P⌉;true;⌈R⌉ ∧ ℓ ≥ 5;⌈(R && (S && !T))⌉;true

Phase Event Automata #

Positive Examples: TriggerResponseBoundL1 - After

TriggerResponseBoundL1 Between #

Between "P" and "Q", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && (R && (S && !T)))⌉;true;⌈Q⌉;true

Phase Event Automata #

Positive Examples: TriggerResponseBoundL1 - Between

TriggerResponseBoundL1 AfterUntil #

After "P" until "Q", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && (R && (S && !T)))⌉;true

Phase Event Automata #

Positive Examples: TriggerResponseBoundL1 - AfterUntil

TriggerResponseDelayBoundL1 #

TriggerResponseDelayBoundL1 Globally #

Globally, it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds after at most "10" time units

Countertraces #

true;⌈R⌉ ∧ ℓ ≥ 5;⌈(R && (S && !T))⌉;⌈!T⌉ ∧ ℓ > 10;true

Phase Event Automata #

Positive Examples: TriggerResponseDelayBoundL1 - Globally

TriggerResponseDelayBoundL1 Before #

Before "P", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds after at most "10" time units

Countertraces #

⌈!P⌉;⌈(!P && R)⌉ ∧ ℓ ≥ 5;⌈(!P && (R && (S && !T)))⌉;⌈(!P && !T)⌉ ∧ ℓ > 10;true

Phase Event Automata #

TriggerResponseDelayBoundL1 After #

After "P", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds after at most "10" time units

Countertraces #

true;⌈P⌉;true;⌈R⌉ ∧ ℓ ≥ 5;⌈(R && (S && !T))⌉;⌈!T⌉ ∧ ℓ > 10;true

Phase Event Automata #

Positive Examples: TriggerResponseDelayBoundL1 - After

TriggerResponseDelayBoundL1 Between #

Between "P" and "Q", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds after at most "10" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && (R && (S && !T)))⌉;⌈(!Q && !T)⌉ ∧ ℓ > 10;true;⌈Q⌉;true

Phase Event Automata #

TriggerResponseDelayBoundL1 AfterUntil #

After "P" until "Q", it is always the case that after "R" holds for at least "5" time units and "S" holds, then "T" holds after at most "10" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && R)⌉ ∧ ℓ ≥ 5;⌈(!Q && (R && (S && !T)))⌉;⌈(!Q && !T)⌉ ∧ ℓ > 10;true

Phase Event Automata #

Universality #

Universality Globally #

Globally, it is always the case that "R" holds

Countertraces #

true;⌈!R⌉;true

Phase Event Automata #

Positive Examples: Universality - Globally

Universality Before #

Before "P", it is always the case that "R" holds

Countertraces #

⌈!P⌉;⌈(!P && !R)⌉;true

Phase Event Automata #

Positive Examples: Universality - Before

Universality After #

After "P", it is always the case that "R" holds

Countertraces #

true;⌈P⌉;true;⌈!R⌉;true

Phase Event Automata #

Positive Examples: Universality - After

Universality Between #

Between "P" and "Q", it is always the case that "R" holds

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉;⌈(!Q && !R)⌉;⌈!Q⌉;⌈Q⌉;true

Phase Event Automata #

Positive Examples: Universality - Between

Universality AfterUntil #

After "P" until "Q", it is always the case that "R" holds

Countertraces #

true;⌈P⌉;⌈!Q⌉;⌈(!Q && !R)⌉;true

Phase Event Automata #

Positive Examples: Universality - AfterUntil

UniversalityDelay #

UniversalityDelay Globally #

Globally, it is always the case that "R" holds after at most "5" time units

Countertraces #

⌈true⌉ ∧ ℓ ≥ 5;⌈!R⌉;true

Phase Event Automata #

Positive Examples: UniversalityDelay - Globally

UniversalityDelay Before #

Before "P", it is always the case that "R" holds after at most "5" time units

Countertraces #

⌈!P⌉ ∧ ℓ ≥ 5;⌈(!P && !R)⌉;true

Phase Event Automata #

Positive Examples: UniversalityDelay - Before

UniversalityDelay After #

After "P", it is always the case that "R" holds after at most "5" time units

Countertraces #

true;⌈P⌉;⌈true⌉ ∧ ℓ ≥ 5;⌈!R⌉;true

Phase Event Automata #

Positive Examples: UniversalityDelay - After

UniversalityDelay Between #

Between "P" and "Q", it is always the case that "R" holds after at most "5" time units

Countertraces #

true;⌈(P && !Q)⌉;⌈!Q⌉ ∧ ℓ ≥ 5;⌈(!Q && !R)⌉;true;⌈Q⌉;true

Phase Event Automata #

Positive Examples: UniversalityDelay - Between

UniversalityDelay AfterUntil #

After "P" until "Q", it is always the case that "R" holds after at most "5" time units

Countertraces #

true;⌈P⌉;⌈!Q⌉ ∧ ℓ ≥ 5;⌈(!Q && !R)⌉;true

Phase Event Automata #

Positive Examples: UniversalityDelay - AfterUntil