[1X6 Finite regular languages[0X This chapter describes some functions to deal with finite regular languages. [1X6.1 Dealing with finite regular languages[0X [1X6.1-1 IsFiniteRegularLanguage[0m [2X> IsFiniteRegularLanguage( [0X[3XL[0X[2X ) _____________________________________[0Xfunction [3XL[0m is an automaton or a rational expression. This function tests whether its argument represents a finite language or not. [4X--------------------------- Example ----------------------------[0X [4Xgap> RandomRatExp(2);[0X [4Xb*(aU@)[0X [4Xgap> IsFiniteRegularLanguage(last);[0X [4Xfalse[0X [4Xgap> RandomRatExp(2);[0X [4XaUbU@[0X [4Xgap> IsFiniteRegularLanguage(last);[0X [4Xtrue[0X [4X------------------------------------------------------------------[0X [1X6.1-2 FiniteRegularLanguageToListOfWords[0m [2X> FiniteRegularLanguageToListOfWords( [0X[3XL[0X[2X ) __________________________[0Xfunction [3XL[0m is an automaton or a rational expression. This function outputs the recognized language as a list of words. [4X--------------------------- Example ----------------------------[0X [4Xgap> r:=RationalExpression("aaUx(aUb)"); [0X [4XaaUx(aUb)[0X [4Xgap> FiniteRegularLanguageToListOfWords(r);[0X [4X[ "aa", "xa", "xb" ][0X [4X------------------------------------------------------------------[0X [1X6.1-3 ListOfWordsToAutomaton[0m [2X> ListOfWordsToAutomaton( [0X[3Xalph, L[0X[2X ) ________________________________[0Xfunction Given an alphabet [3Xalph[0m (a list) and a list of words [3XL[0m (a list of lists), outputs an automaton that recognizes the given list of words. [4X--------------------------- Example ----------------------------[0X [4Xgap> ListOfWordsToAutomaton("ab",["aaa","bba",""]);[0X [4X< deterministic automaton on 2 letters with 6 states >[0X [4Xgap> FAtoRatExp(last);[0X [4X(bbUaa)aU@[0X [4X------------------------------------------------------------------[0X