let add_trans (nfa : nfa)
              (s1  : state) 
              (c   : symbol)
              (s2  : state) : unit =
  add_state nfa s1;
  add_state nfa s2;
  match c with
    | Character c -> Charset.add (which_symbols nfa.delta s1 s2) c
    | Epsilon     -> Hashset.add (which_states  nfa.epsilon s1) s2