let rec epsilon_trans lstate maq = 
  
  (** res = todos os estados atingíveis por uma transição epsilon a partir dos estados de lstate *)

  let res = 
    (normalize (flatten (map (fun x -> epsilon_trans_aux x maq) lstate))) in

  
  (** junta-se estes estados ao lstate*)

  let resultado = (union res lstate) in

  
  (** se esta união não traz nada de novo... ponto fixo. Devolve se então resultado *)

  if (equal lstate resultado) 
  then resultado

  
  (** senão, tenta-se mais uma volta*)

  else (epsilon_trans resultado  maq)