ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ ;Pc@svdfdYZdfdYZdfdYZdfdYZdfd YZd fd YZd S( tLeftKanExtensioncBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZRS(c Cs||_|j|_|jj||jj||jj||||_||_g|D]$\}}t|t|f^qa|_||_||_ |j dS(N( tmodtCatt check_grapht check_rulestAtBttupletRtXtFtgeneral_procedure( tselfRRRRR R tgth((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt__init__s    4  cCs,|j|j|j|jdS(N(tinitialize_tablestmake_confluent_systemtmake_automatontmake_natural_transformation(R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyR 's   cCs i|_i|_|jdS(N(tobj_to_str_tabletstr_to_obj_tabletmake_initial_rules(R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyR0s  csgfd}xjjD]t}jj|}jj|}jj|}jj|}tjj|}jj|}jj|} |r=|} xW|D]O} j j| } | | krt d| | | fnj j| } qW| | kr_t d|| | fq_n"|| kr_t d|| fnx7|D]/} ||| ff|||| ffqfWq%Wgj D]*\} }j | j |f^q}_ |_|_dS(NcsDj|}j|}||kr@j||fndS(N(t make_wordtappend(tatbtawtbw(tReR (sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pytadd_rule;s s9Arrow [%s] with source %s does not compose with target %ss0Arrow %s with target %s does not compose with %ss"Source %s does not match target %s(RtarrowstsourcettargetR tfotfaRR Rt ValueErrorRRRtRktRinit(R RRtsrcattgtatXAtXatFatFsrcatFtgtattRtsrcbtxtyR%((RR sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyR5s<     1:  cCs1|jj|jdd|_|jj|_dS(Ntdelimt.(Rt KnuthBendixR&trst reductionstRconf(R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyRbscs*fdgxGjjD]9}x0jj|D]}j||ffq;Wq"WtgjjD]}|gf^qo}x=jjjD])\}\}}||j||fqWtgj D]*\}} j |j | f^q} ixTj D]I\} } j | } x+t dt | D]}d| | t(R;(RtobjectsR R"RtdictRRtitemsR7t make_termtrangeR8RtFiniteAutomatontadd_transitionRLRtFunctiontNoneRKRNtKbtFunctortK(R RR0RtfollowsRR/ttgtbRCtvtIRtltrR.tiR;RBtbtermtxibR@tubRJRZ((RNR)RHRIR R!sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyRfsn+%@                    c s(fdfd}tgjjD]}|gf^q7gxDjjD]6}x-jj|D]}|||ffq~WqeWxvr}gx]|D]U}|}x@jjD]2}jj||kr|||fqqWqWqWi} xjjD]}jj|} jj|}tg| D]"} | j | |ff^qg} j j | | || |RPcCs |jjjS(N(RtFSARV(R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt_get_FiniteAutomaton?RPcCs |jjjS(N(RtRER>(R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt _get_SolveFSA@RPcCs |jjS(N(RR(R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt_get_CatARPcCst||||||S(N(R(R RRRR R ((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pytlkeFsiic sr|j}n|jj|jjg}|j}|j}|jjdd}|jjdd}|j|||||ifd} |jj| dj j j ddS(NcSsdgS(Ni((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROSRPcSsdS(NcSs|S(N((R1((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROSRP((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROSRPcSs|S(N((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROTRPcSsgS(N((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROTRPcs|kr|Sjj|jj}rB|j}ntjdrtd}g}|j}xt d|dD]5}|j g|j |D]}t |^qqWn:|j }|j}g|D]}t |^q}||<|S(Ntlengthii(R\R"Rt rempretuptreversedRwt startswithtinttget_words_memoRUtextendtget_words_of_lengthRRR(RRtmaxlenRRRcR0(Rt from_objectstkeR(sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt get_arrowsYs   6  RlRk( tget_dualRtGraphRRQRR[RRXR\R"RlRY( R RRRRRRR R R((RRRRsI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt arrows_mapLs   cCst|trQ|\}}}|dkr6d}n|jj|||}n|dkr~|j|jddd|}nt|||S(NcSsdS(NcSsdS(Ni((R1((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROvRP((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyROvRPRiR(R9RRYRR[RRlR(R RRRR"R#Rl((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyRrs   !c Csddg}idd6dd6}|jj||}|jji|d6|d6|||g}|jji|d6|d6|||g} |jj|| } |j|| \} } | dS(NiiRR(ii(ii(RRRXR[tcolimit( R tS0tS1tf0tf1RQRRtXoR*R tcolimit_objecttcolimit_functions((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt coequalizer|s ,,c Cs|jjdgi}g}|jjdd}|j|||||}|jd}|j}g|D]} | d^qq}tg|jD]\\}} ||jjtg| jD]\} } | | df^q| j |f^q}||fS(NicSsdS(Ni((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyRORPcSsdS(N(((R0((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyRORP( RRR[RRNRqRRRSRXRl( R RR RRR tlkaRRR0tcofRtk((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyRs  ocCs|j|}|j||S(N(RR(R RRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyt test_arrowssN( RRRRRRRRRYRRRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyR;s     & * "N(RRKR?RRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/guppy/etc/KanExtension.pyts F%9}