contain k@(Concat a b) r = k == r || (a `contain` Epsilon && b `contain` (removeEpsilon r)) || (a `contain` (removeEpsilon r) && b `contain` Epsilon)
contain k@(Concat a b) r = k == r || (a `contain` Epsilon && b `contain` (removeEpsilon r)) || (a `contain` (removeEpsilon r) && b `contain` Epsilon)
contain k@(Concat a b) r = k == r || (a `contain` Epsilon && b `contain` (removeEpsilon r)) || (a `contain` (removeEpsilon r) && b `contain` Epsilon)