In reply to taestytart:
Yes because ($rose(a) || $fell(a) is and expression, and that expression is a sequence of 1 cycle.
The use of the sequential or would be inappropriate here because
($rose(a) or $fell(a) |->$stable(b) [*50]); // DO NOT USE
// Because all terms of the OR in the antecedent need to be verified with its consequent
// Esentially, the following
($rose(a) or $fell(a) |->$stable(b) [*50]); // is equivalent to
( ($rose(a) |->$stable(b) [*50]) and ($fell(a) |->$stable(b) [*50]);
// If you insist on using the "or", then use the first_match() with it.
ap_ab: assert property(@ (posedge clk) first_match($rose(a) or $fell(a))
|-> $stable(b)[*50]);
There is a general recommendation by people on the 1800’2017 committee on assertions that one should avoid using the first_match()