-- Invariants for Q xs ys xs':
-- length xs = length ys + length xs'
-- xs' = drop (length ys) xs -- in fact, shared (except after fmap)
-- Invariants for Q xs ys xs':
-- length xs = length ys + length xs'
-- xs' = drop (length ys) xs -- in fact, shared (except after fmap)