6 Finite regular languages This chapter describes some functions to deal with finite regular languages. 6.1 Dealing with finite regular languages 6.1-1 IsFiniteRegularLanguage IsFiniteRegularLanguage( L )  function L is an automaton or a rational expression. This function tests whether its argument represents a finite language or not.  Example  gap> RandomRatExp(2); b*(aU@) gap> IsFiniteRegularLanguage(last); false gap> RandomRatExp(2); aUbU@ gap> IsFiniteRegularLanguage(last); true  6.1-2 FiniteRegularLanguageToListOfWords FiniteRegularLanguageToListOfWords( L )  function L is an automaton or a rational expression. This function outputs the recognized language as a list of words.  Example  gap> r:=RationalExpression("aaUx(aUb)");  aaUx(aUb) gap>  FiniteRegularLanguageToListOfWords(r); [ "aa", "xa", "xb" ]  6.1-3 ListOfWordsToAutomaton ListOfWordsToAutomaton( alph, L )  function Given an alphabet alph (a list) and a list of words L (a list of lists), outputs an automaton that recognizes the given list of words.  Example  gap> ListOfWordsToAutomaton("ab",["aaa","bba",""]); < deterministic automaton on 2 letters with 6 states > gap> FAtoRatExp(last); (bbUaa)aU@