úÎ3^/‡C      !"#$%&'()*+,-./0123456789:;<=>?@ABAlphabet 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 stackC%Symbol type are forced to be a monoidCCSimple 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 stateDAIn this differ with Maybe because this show a upper bounded orderE Same as MaybeF Same as MaybeG Same as MaybeH Same as Maybe  IJDEFGH    IJDEFGHImplementacion 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 !"#$ !"#$"# !$ !"#$%Abstraccion de las maquinas de turing((c) Jorge Santiago Alvarez Cuadros, 2016GPL-3sanjorgek@ciencias.unam.mx experimentalportableSafe"7;N8Movimiento a la izquierda9 No movimiento:Movimiento a la derecha%&'()*+,-./0123456789:;<=>?@AB%&'()*+,-./0123456789:;<=>?@;<789:B23456A10=>-./+,?@)*'(%&%&'()*+,-./0123456789:;<=>?@ABK      !"#$%&'( #)*+,-./0123456789:;(<=> ?@ABCDEFGHIJKLturin_GCi6Z9nsD7a72Uwiaevys7 Data.Sigma Data.State Data.DeltaMath.Model.Automaton.FiniteMath.Model.Automaton.StackMath.Model.TuringWdSymbolblankz0FinalStateQQEterminalisError:*>::>-::->:nextDFiniteANFNDeltaN TransductorMooreMealyFiniteAFLambda2Lambda1DeltaliftDliftL1liftL2 checkString translateliftDN checkStringNStackAS MultiModelMTSModelTSTuringMmoveHead MultiTapeMTTapeablegetHeadliftTapeMDeltaFWDwLfRtUpLRSLRWaysopositeliftMDgetMHead liftMTape$fWaysFW $fWaysLRS $fMonoidChar$fBoundedState $fEnumState $fMonadState$fApplicativeState$fFunctorState$fFoldableState $fMonoidState