let print_lang (graph : graph) (id : nodeid) : unit = 
  Printf.printf "%s gets " id;
  let node = find_node graph id in
  match node.lang with
    | Unrestricted -> Printf.printf "all strings\n"
    | Machine m -> 
        if !Options.elim then elim_dead_states m;
        Nfa.print_nfa (if !Options.minimize then (minimize m) 
                       else m)
    | SubMachine (m,c)-> 
        Printf.printf " SubNfa : \n";
        print_nfa m;
        Hashtbl.iter (fun x _ -> Printf.printf "  - %s\n" x) c
    | SuperMachine (m,_) -> 
        Printf.printf " SuperNfa : \n"; print_nfa m