leftA :: Auto a q -> Auto a (Either q r) leftA (A s ini ac t) = (A st init acc tr) where st = map (Left) s init = map (Left) ini acc = either ac (\x->False) tr (Left s) w = map (Left) (t s w) tr (Right s) w = []