let next simb maquina memo =   
  let (lesta, restante) = memo in
  let (transicoes,b,c) = maquina in
  
  (** tr = os estados atingíveis pela transição de label simb a partir dos estado de lesta*)

  let tr = (fold_left 
              (fun x y -> (select y simb transicoes)@x ) 
              [] lesta)
  in
  
  (** estende-se tr com os estados atingídos por transições epsilon *)

  let res =  epsilon_trans  (normalize tr) maquina  in
  if (res = []) then raise (FIM memo) else res