Fail problem

In reply to peter:
a_sequence[*0] is called an empty match
(b[*0] ##1 c ) is equivalent to c
Thus,
A:(~a[*1:10]) intersect (!b[*0] ##1 b ##1 !b) // is same as
A:(~a[*1:10]) intersect (b ##1 !b)
// Obviously different that
B:(~a[*1:10]) intersect (##1 b ##1 !b)


/* 1800'2017 16.9.2.1 Repetition, concatenation, and empty matches Using 0 as a sequence repetition number, an empty sequence (see 16.7 ) results, as in this example: */
a [*0] 
/* Because empty matches occur over an interval of zero clock ticks and are thus of length 0, they follow the set of concatenation rules specified below. In the following rules, an empty sequence is denoted as empty, and another sequence (which may be empty or nonempty) is denoted as seq.*/
 — (empty ##0 seq) does not result in a match. 
 — (seq ##0 empty) does not result in a match. 
 — (empty ##n seq), where n is greater than 0, is equivalent to (##(n-1) seq). 
 — (seq ##n empty), where n is greater than 0, is equivalent to (seq ##(n-1) `true).

Ben Systemverilog.us