Holds if there are transitions from the components of q
to the corresponding
components of r
labelled with s1
, s2
, and s3
, respectively.
Additionally, a heuristic is used to avoid blowups in the case of complex regexps.
For regular expressions with more than 100 states, we only look at all the characters
for the transitions out of q
and only consider transitions that use the lexicographically
smallest character.
Import path
import codeql.regex.nfa.SuperlinearBackTracking
predicate step(StateTuple q, InputSymbol s1, InputSymbol s2, InputSymbol s3, StateTuple r)