%      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst u v w x y z { | } ~  portable provisionaljas@di.uminho.ptList Function: l1 - l2.  Unlike List.(\-), this function removes duplicates as well. FApply a function repeatedly, until a fix point is reached, i.e. until ; the result of the function is the same as the argument. 8Compute the permutations of a given list. For instance, permutations [1,2,3]  = [[1,2,3],[2,1,3],[2,3,1],[1,3,2],[3,1,2],[3,2,1]] portable provisionaljas@di.uminho.pt %Execute the transition function of a  on an initial state C and list of input symbol. Return the final state when all input  symbols have been consumed. ;Test whether the given automaton accepts the given list of  input symbols. ;Test whether the given automaton accepts the given list of ( input symbols (expressed as a fold). 5Helper function to show the transition function of a . Write a  to a Haskell module in a file. HCompute the labels with the same (giving) origin and destination states 7Compute the destination states giving the origin state 4Compute the states that can be reached from a state ; according to a given transition function and vocabulary (Produce the transition table of a given .  Given a +, it returns a list of triples of the form   - (Origin,Symbol,Destination)   % defining all the transitions of the . Reconstruct a  from a transition table. 6 Given an automaton expressed by a transition table % (ie a list of triples of the form   0 (Origin,Symbol,Destination)    it constructs a . The other elements of the , input tuple are the vocabulary, a set of * states, an initial state, and a set of  final states. Dfa to a Table-based Dfa ?Add rows to a table-based Dfa, given a Dfa transition function  and its vocabulary.  Renames a . H It renames a DFA in such a way that the renaming of two isomorphic DFA  returns the same DFA. = It is the basis for the equivalence test for minimized DFA.  Beautify a + by assigning (natural) numbers to states. Compute the dead states of a  6Compute the size of a deterministic finite automaton. 9 The size of an automaton is the number of its states. 'Checks whether a state is dead or not. JOne state is dead when it is not possible to reach a final state from it. E (probably we should consider that it has to be reachable from the  initial state, as well) .Checks whether a state is a sync state or not ?A sync state is a state that has transitions to itself for all  symbols of the vocabulary 8Compute the number of incoming arrows for a given state 8Compute the number of outgoing arrows for a given state 3Type of Table-based Deterministic Finite Automata. =The type of Deterministic Finite Automata parameterized with  the type st of states and sy of symbols.      portable provisionaljas@di.uminho.pt;Test whether the given automaton accepts the given list of  input symbols. %Execute the transition function of a ./ on an initial state C and list of input symbol. Return the final state when all input  symbols have been consumed. 3Apply the transition function to a list of states. !Compute the eplison closure of a ./. "5Helper function to show the transition function of a ./. :Produce the transition table of a given finite automaton. #ACompute the labels with the same (giving) origin and destination $7Compute the destination states giving the origin state %:Compute the states that can be reached from a given state ; according to a given transition function and vocabulary &(Produce the transition table of a given ./. Given a ./* it returns a list of triples of the form   - (Origin,Symbol,Destination)   % defining all the transitions of the ./. 'Reconstruct a ./ from a transition table.  Given a ./! expressed by a transition table % (ie a list of triples of the form   6 (Origin,Maybe Symbol,Destination)    it constructs a ./. The other elements of the , input tuple are the vocabulary, a set of 5 states, and the sets of initial and final states ( Renames a ./. )Compute the dead states of a ./ *6The size of an automaton is the number of its states. +Checks whether a ./ state is dead or not. Checks whether a ./ state is a sync state or not ,8Compute the number of incoming arrows for a given state -8Compute the number of outgoing arrows for a given state .>Type of Non-Deterministic Finite Automata. Parameterized with  the type st of states and sy of symbols.  !"#$%&'()*+,-././ '#$&%"(!*)+,-40123456789:;<=>?@ABCDEFGHIJKLM0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\PRO\QNSTUVWYXZ[portable provisionaljas@di.uminho.pt])Minimize the number of states of a given .  This function uses Brzozowski' s algorithm ^)Minimize the number of states of a given ./.  This function uses Brzozowski' s algorithm _)Minimize the number of states of a given . ,This minimization algorithm is described in  "0An Introduction to Formal Languages and Automata", Peter Linz, 3rd Ed. ! Jones and Bartlett Publishers `)Minimize the number of states of a given . (a third algorithm) a Reverse a  b Reverse a ./ c Reverse a  into a  . It uses a ./$ as an intermediate representation. ]^_`abc]_`^acbportable provisionaljas@di.uminho.pt dCatamorphism induced by the k inductive data type eCTest whether a match can be found for the given regular expression B in the given sequence of characters. The regular expression is  assumed not to contain m or l . See also matches'. fCTest whether a match can be found for the given regular expression B in the given sequence of characters. The regular expression is  allowed to contain m or l. @Produce a list of all possible ways of splitting the input list " into two parts. For instance,    splits foo  = [("",foo),(f,oo),(fo,o),(foo,"")]   @Produce a list of all possible ways of splitting the input list C into two parts where the first part is non-empy. For instance,    splits foo  = [(f,oo),(fo,o),(foo,"")]   g*Compute the size of a regular expression. L We define the size of a regular expression as the number of occurrences  of symbols of the alfabeth h6Print regular expression to String as a catamorphism. 2 A straightforward (catamorphic) show function. @(it produces too many brackets, making it difficult to read or  understand the expression) iNSimplify regular expressions according to the algebra of regular expressions. j(Rewrite extended regular expressions to 1 plain regular expression. This means that the m  and l# constructors are normalized away. kType of regular expressions. defghijklmnopqrsklmnopqrsdefghij portable provisionaljas@di.uminho.ptt Compute a ./ from a k. u Compute a ./ from a k. H Auxiliar function threading the context: the first available int to  name the states v Compute a  from a k.  (via the intermediate ./) tuvtvu portable provisionaljas@di.uminho.pt{Print a ./ in GraphViz Print a ./ in GraphViz in a file Print a  in GraphViz Print a  in GraphViz in a file Print a ./ in GraphViz wxyz{|}~ wxyz{}~|   portable provisionaljas@di.uminho.ptBCompute a regular expression that defines the transitions from an  origin to a destination in a . BCompute a regular expression that defines the transitions from an  origin to a destination in a ./. $Compute a regular expression from a . portable provisionaljas@di.uminho.ptParser for regular expressions portable provisionaljas@di.uminho.ptTest whether two  are quivalent or not. Test whether two ./ are quivalent or not. Test whether two k are quivalent or not. Test whether a list of k are quivalent or not. portable provisionaljas@di.uminho.ptClass of Finite automaton portable provisionaljas@di.uminho.ptPrint a k in GraphViz-dot (as a string)  !"#$%&'()*+,-.//0123456789:;<=>?@@ABCDEFGHIJ+KLMNOPQRSTUVWX/YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  IAK/  HaLeX-1.1Language.HaLex.ParserLanguage.HaLex.UtilLanguage.HaLex.DfaLanguage.HaLex.NdfaLanguage.HaLex.DfaMonadLanguage.HaLex.FaOperationsLanguage.HaLex.MinimizeLanguage.HaLex.RegExpLanguage.HaLex.RegExp2FaLanguage.HaLex.FaAsDiGraphLanguage.HaLex.Examples.RobotLanguage.HaLex.Dfa2MDfaLanguage.HaLex.Fa2RegExpLanguage.HaLex.RegExpParserLanguage.HaLex.EquivalenceLanguage.HaLex.FaClassesLanguage.HaLex.RegExpAsDiGraphLanguage.HaLex.Examples.Realsymbolsatisfytokensucceed<|>Parser<->limit permutationsdfawalk dfaaccept showDfaDeltadfaIOtransitionsFromTodestinationsFromreachedStatesFromtransitionTableDfa ttDfa2DfabeautifyDfaWithSyncStdfa2tdfa renameDfa beautifyDfa dfadeadstatessizeDfaisStDeadisStSyncnumberIncomingArrowsnumberOutgoingArrowsDfa ndfaacceptndfawalkepsilon_closure showNdfaDelta toHaskellndfaTransitionsFromTondfadestinationsFromndfareachedStatesFromtransitionTableNdfa ttNdfa2Ndfa renameNdfandfadeadstatessizeNdfa ndfaIsStDeadndfanumberIncomingArrowsndfanumberOutgoingArrowsNdfa dfaaccept'runDfashowDfa showInDotshowElemsListPerLine showArrows buildLinexpto deadstates deadstates' isSyncStaterobotex2ex3ex4ex5ex_intex6teprconverte runAccept_prCodeInstrstsDfandfa2ctndfa2dfalookupCTdfa2ndfa concatNdfa unionNdfastarNdfaplusNdfaexpNdfa concatDfaunionDfastarDfaplusDfaCT minimizeDfa minimizeNdfastdMinimizeDfa minimizeExp reverseDfa reverseNdfareverseDfaAsDfa cataRegExp matchesREmatches' sizeRegExpshowREsimplifyRegExp extREtoRERegExpOptional OneOrMoreStarThenOrLiteralEpsilonEmpty regExp2Ndfa regExp2Ndfa' regExp2Dfa ndfa2graphvizndfa2graphviz2file dfa2graphvizdfa2graphviz2file tographviz genOneArrow tographvizIOdfa2DiGraphWithNoSyncStdfaDiGraphWithNoSyncStIOrobotMrobotM2 showDfaMDeltadfa2MIOre2MDfa regExpFromTondfaregExpFromTo dfa2RegExp parseRegExpequivDfa equivNdfaequivREequivREsFaacceptsizeFaequivminimize reverseFa toHaskell'toGraph toGraphIOunionFaconcatFastarFaplusFa re2graphviz delta_realdfaisreal<*><$> dfa2tdfaStepTableDfadelta'showInitialStateshowFinalStates'movesmoves2moves3moves4accvarGlob runAccept runAccept_ex4 runAccept_ex5 runAccept_int runAccept_ex6 runAccept_teexpoEndSaveDeleteInsertLocateOpensplits frontSplitsexgacc2exShowshowAsAccumDfare2MHaskellModfdfa_intsinal''dre_intintdfad're_realre_real'cre_realrealdfa' realdfa'' realdfa''' realdfa''''genGraphrealdfarealndfa deltaNdfa isrealNdfa