úÎ;6SU      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTAlphabet and symbols((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafe3.List symbol alias, Word are defined in PreludeMSymbols are character, and with Unicode CharSet we have a big amount of them. Blank symbolInitial symbol for stackU%Symbol type are forced to be a monoidUUSimple state data((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafe KFinal state represent a set of states which elements put end to computation.Macine states are only a label, maybe a letterState constructor Error stateTells if a state is final VVerifica si el estado es de error, comparandolo con la definicion de estado de error!Tells if a state is a error stateVAIn this differ with Maybe because this show a upper bounded orderW Same as MaybeX Same as MaybeY Same as MaybeZ Same as Maybe  [\VWXYZ    [\VWXYZImplementacion de un mapeo((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafeKL    Finite Automaton((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafeKL "Finite non deterministic Automaton.let autFinN = FN deltaN (terminal [Q 0]) (Q 0)Finite deterministic Automaton let autFin = F delta [Q 0] (Q 0)XTransition function hava a State and a Symbol by domain to decide next state in machine"Lift a list of 3-tuples in a Delta;let delta = liftD [(0,'0',0),(0,'1',1),(1,'0',1),(1,'1',0)] Executes a automaton over a word%checkString autFin "1010010101101010"True1checkString autFin "1010010101101010001010101010"False4Lift a list of 3-tuples in a non deterministic deltaElet deltaN = liftDN [(0,'0',[0]),(0,'1',[1]),(1,'0',[1]),(1,'1',[0])]KExecutes a non-deterministic automaton over a word, maybe overload your pc Stack Automaton((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafeKL 1Stack machine only needs a delta and a init state"ƒDelta for stack machine, takes a state, a symbol in string input and a symbol in stack head and returns next state and update stack#'Takes a list of tuples and lift a Delta:let delta = liftD [(0,'1','A',1,[AA]),(0,'0',blank,0,[A])]$$Executes a stack machine over a word#checkString autStack 'aaabbbcccccc'True !"#$ !"#$"# !$ !"#$Turing machine abstaction((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafe"7;N8 Left move9No move: Right move%&'()*+,-./0123456789:;<=>?@AB%&'()*+,-./0123456789:;<=>?@;<789:B23456A10=>-./+,?@)*'(%&%&'()*+,-./0123456789:;<=>?@ABTwo ways turing machine((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafe357>KLH/let tapeLifted = (liftTape "word")::Tape Symbol tapeLiftedT "" 'w' "ord" CDEFGHIJKCD CDKJIHGFECDEFGHIJKFour ways turing machine((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafe37>KL LMNOPQRSTLM LMTSRQPONLMNOPQRST]      !"#$%&'()*!"%+,-./0123456!789:;<=*>?@"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`turin_3G3SXQbWufO7wCAuCCzOb8 Data.Sigma Data.State Data.DeltaMath.Model.Automaton.FiniteMath.Model.Automaton.StackMath.Model.TuringMath.Model.Turing.TwoWaysMath.Model.Turing.FourWaysWdSymbolblankz0FinalStateQQEterminalisError:*>::>-::->:nextDFiniteANFNDeltaN TransductorMooreMealyFiniteAFLambda2Lambda1DeltaliftDliftL1liftL2 checkString translateliftDN checkStringNStackAS MultiModelMTSModelTSTuringMmoveHead MultiTapeMTTapeablegetHeadliftTapeMDeltaFWDwLfRtUpLRSLRWaysopositeliftMDgetMHead liftMTape$fWaysFW $fWaysLRSTapeT$fTuringMTape[]LRS$fTuringMTapeCharLRS$fTapeableTape[]$fTapeableTapeChar $fMonoidTape$fApplicativeTape $fFunctorTapeTracksTrack$fTuringMTracksCharFW$fTuringMTapeCharFW$fTapeableTracksChar$fMonoidTracks$fApplicativeTracks$fFunctorTracks $fShowTracks $fMonoidChar$fBoundedState $fEnumState $fMonadState$fApplicativeState$fFunctorState$fFoldableState $fMonoidState