Checks if the language read by the input NFA is different
    from Σ∗ (i.e. contains all possible words), returning
    True/False.

    To test nfa A for nonuniversality, it suffices to test Ā (
    complementary automaton of A) for nonemptiness

    :param dict nfa: input NFA.
    :return: *(bool)*, True if input nfa is nonuniversal,
             False otherwise.

def nfa_nonuniversality_check(nfa: dict) -> bool:
    """ Checks if the language read by the input NFA is different
    from Σ∗ (i.e. contains all possible words), returning
    True/False.

    To test nfa A for nonuniversality, it suffices to test Ā (
    complementary automaton of A) for nonemptiness

    :param dict nfa: input NFA.
    :return: *(bool)*, True if input nfa is nonuniversal,
             False otherwise.
    """
    # NAIVE Very inefficient (exponential space) : simply
    # construct Ā and then test its nonemptiness
    complemented_nfa = nfa_complementation(nfa)
    return DFA.dfa_nonemptiness_check(complemented_nfa)