§
    'ê[fRC  ã                   óª  — d dl mZ d dlmZmZ  e¦   «         Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d	„ d
e¦  «        Z	 G d„ de	¦  «        Z
 G d„ de	¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Zedk    r e¦   «          dS dS )é    )ÚCounter)ÚAPPÚLogicParserc                   ó.   — e Zd ZdZdZdZeegZeegz   ZdS )ÚTokensú(ú)z-oN)Ú__name__Ú
__module__Ú__qualname__ÚOPENÚCLOSEÚIMPÚPUNCTÚTOKENS© ó    úH/var/www/piapp/venv/lib/python3.11/site-packages/nltk/sem/linearlogic.pyr   r      s3   € € € € € à€DØ€Eð €Cà�5ˆM€EØ�c�U‰]€F€F€Fr   r   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚLinearLogicParserz!A linear logic expression parser.c                 óœ   — t          j        | ¦  «         t          dt          j        dd di| _        | xj        t          j        gz  c_        d S )Né   é   é   )r   Ú__init__r   r   r   Úoperator_precedenceÚright_associated_operations©Úselfs    r   r   zLinearLogicParser.__init__   sH   € ÝÔ˜TÑ"Ô"Ð"å$'¨­F¬J¸¸4ÀÐ#CˆÔ ØÐ(Ô(­V¬Z¨LÑ8Ð(Ô(Ð(Ð(r   c                 ó   — t           j        S ©N)r   r   r   s    r   Úget_all_symbolsz!LinearLogicParser.get_all_symbols$   s
   € ÝŒ}Ðr   c                 óš   — |t           j        vr|                      ||¦  «        S |t           j        k    r|                      ||¦  «        S d S r!   )r   r   Úhandle_variabler   Úhandle_open)r   ÚtokÚcontexts      r   ÚhandlezLinearLogicParser.handle'   sP   € Ø•f”mÐ#Ð#Ø×'Ò'¨¨WÑ5Ô5Ð5Ø•F”KÒÐØ×#Ò# C¨Ñ1Ô1Ð1ð  Ðr   c                 ó4   — |t           j        k    rt          S d S r!   )r   r   ÚImpExpression)r   r&   s     r   Úget_BooleanExpression_factoryz/LinearLogicParser.get_BooleanExpression_factory-   s   € Ø•&”*ÒÐÝ Ð à�4r   c                 ó   —  |||¦  «        S r!   r   )r   ÚfactoryÚfirstÚseconds       r   Úmake_BooleanExpressionz(LinearLogicParser.make_BooleanExpression3   s   € Øˆw�u˜fÑ%Ô%Ð%r   c                 óh  — |                       t          |¦  «        r–|                      d¦  «        r�|                      d¦  «        t          j        k    r^|                      ¦   «          |                      t          ¦  «        }|                      t          j        ¦  «         t          ||d¦  «        }|S )zèAttempt to make an application expression.  If the next tokens
        are an argument in parens, then the argument expression is a
        function being applied to the arguments.  Otherwise, return the
        argument expression.r   N)
Úhas_priorityr   ÚinRangeÚtokenr   r   Úprocess_next_expressionÚassertNextTokenr   ÚApplicationExpression)r   Ú
expressionr'   Úarguments       r   Úattempt_ApplicationExpressionz/LinearLogicParser.attempt_ApplicationExpression6   s“   € ð
 ×Ò�S 'Ñ*Ô*ð 	OØ�|Š|˜A‰Œð O 4§:¢:¨a¡=¤=µF´KÒ#?Ð#?Ø—
’
‘”�Ø×7Ò7½Ñ<Ô<�Ø×$Ò$¥V¤\Ñ2Ô2Ð2Ý2°:¸xÈÑNÔN�
ØÐr   c                 ór   — |d                               ¦   «         rt          |¦  «        S t          |¦  «        S )Nr   )ÚisupperÚVariableExpressionÚConstantExpression)r   Únames     r   Úmake_VariableExpressionz)LinearLogicParser.make_VariableExpressionC   s4   € Ø�Œ7�?Š?ÑÔð 	,Ý% dÑ+Ô+Ð+å% dÑ+Ô+Ð+r   N)r
   r   r   Ú__doc__r   r"   r(   r+   r0   r:   r@   r   r   r   r   r      sƒ   € € € € € Ø+Ð+ð9ð 9ð 9ðð ð ð2ð 2ð 2ðð ð ð&ð &ð &ðð ð ð,ð ,ð ,ð ,ð ,r   r   c                   óL   — e Zd Z e¦   «         Zed„ ¦   «         Zdd„Zd„ Zd„ Z	dS )Ú
Expressionc                 ó6   — | j                              |¦  «        S r!   )Ú_linear_logic_parserÚparse)ÚclsÚss     r   Ú
fromstringzExpression.fromstringN   s   € àÔ'×-Ò-¨aÑ0Ô0Ð0r   Nc                 ó$   — t          | ||¦  «        S r!   )r7   )r   ÚotherÚother_indicess      r   ÚapplytozExpression.applytoR   s   € Ý$ T¨5°-Ñ@Ô@Ð@r   c                 ó,   — |                       |¦  «        S r!   )rM   ©r   rK   s     r   Ú__call__zExpression.__call__U   s   € Ø�|Š|˜EÑ"Ô"Ð"r   c                 ó(   — d| j         j        › d| › d�S )NÚ<Ú Ú>)Ú	__class__r
   r   s    r   Ú__repr__zExpression.__repr__X   s    € Ø4�4”>Ô*Ð4Ð4¨TÐ4Ð4Ð4Ð4r   r!   )
r
   r   r   r   rE   ÚclassmethodrI   rM   rP   rV   r   r   r   rC   rC   J   sr   € € € € € à,Ð,Ñ.Ô.Ðàð1ð 1ñ „[ð1ðAð Að Að Að#ð #ð #ð5ð 5ð 5ð 5ð 5r   rC   c                   óH   — e Zd Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚAtomicExpressionNc                 óX   — t          |t          ¦  «        sJ ‚|| _        |sg }|| _        dS )z‘
        :param name: str for the constant name
        :param dependencies: list of int for the indices on which this atom is dependent
        N)Ú
isinstanceÚstrr?   Údependencies)r   r?   r]   s      r   r   zAtomicExpression.__init__]   s<   € õ
 ˜$¥Ñ$Ô$Ð$Ð$Ð$ØˆŒ	àð 	ØˆLØ(ˆÔÐÐr   c                 ó"   — |r| |v r||          S | S )zõ
        If 'self' is bound by 'bindings', return the atomic to which it is bound.
        Otherwise, return self.

        :param bindings: ``BindingDict`` A dictionary of bindings used to simplify
        :return: ``AtomicExpression``
        r   ©r   Úbindingss     r   ÚsimplifyzAtomicExpression.simplifyi   s%   € ð ð 	˜ Ð(Ð(Ø˜D”>Ð!àˆKr   c                 ó   — g | _         | g fS ©a3  
        From Iddo Lev's PhD Dissertation p108-109

        :param index_counter: ``Counter`` for unique indices
        :param glueFormulaFactory: ``GlueFormula`` for creating new glue formulas
        :return: (``Expression``,set) for the compiled linear logic and any newly created glue formulas
        ©r]   ©r   Úindex_counterÚglueFormulaFactorys      r   Úcompile_poszAtomicExpression.compile_posv   ó   € ð ˆÔØ�bˆzÐr   c                 ó   — g | _         | g fS rc   rd   re   s      r   Úcompile_negzAtomicExpression.compile_neg�   ri   r   c                 óh   — |                      | j                             ¦   «         ¦  «        | _        d S r!   )Úinitialize_labelr?   Úlower©r   Úfstructs     r   Úinitialize_labelsz"AtomicExpression.initialize_labelsŒ   s'   € Ø×,Ò,¨T¬Y¯_ª_Ñ->Ô->Ñ?Ô?ˆŒ	ˆ	ˆ	r   c                 óB   — | j         |j         k    o| j        |j        k    S r!   )rU   r?   rO   s     r   Ú__eq__zAtomicExpression.__eq__�   s   € ØŒ~ ¤Ò0ÐL°T´YÀ%Ä*Ò5LÐLr   c                 ó   — | |k     S r!   r   rO   s     r   Ú__ne__zAtomicExpression.__ne__’   ó   € Ø˜5’=Ð Ð r   c                 ó<   — | j         }| j        r|d| j        z  z  }|S ©Nz%s)r?   r]   )r   Úaccums     r   Ú__str__zAtomicExpression.__str__•   s+   € Ø”	ˆØÔð 	.Ø�T˜DÔ-Ñ-Ñ-ˆEØˆr   c                 ó*   — t          | j        ¦  «        S r!   )Úhashr?   r   s    r   Ú__hash__zAtomicExpression.__hash__›   s   € Ý�D”I‰ŒÐr   r!   )r
   r   r   r   ra   rh   rk   rq   rs   ru   rz   r}   r   r   r   rY   rY   \   s«   € € € € € ð
)ð 
)ð 
)ð 
)ðð ð ð ð	ð 	ð 	ð	ð 	ð 	ð@ð @ð @ðMð Mð Mð!ð !ð !ðð ð ðð ð ð ð r   rY   c                   ó   — e Zd Zd„ ZdS )r>   c                 óØ   — t          |t          ¦  «        sJ ‚t          |t          ¦  «        r&	 |t          || fg¦  «        z   S # t          $ r Y nw xY w| |k    r|S t          | ||¦  «        ‚)aæ  
        If 'other' is a constant, then it must be equal to 'self'.  If 'other' is a variable,
        then it must not be bound to anything other than 'self'.

        :param other: ``Expression``
        :param bindings: ``BindingDict`` A dictionary of all current bindings
        :return: ``BindingDict`` A new combined dictionary of of 'bindings' and any new binding
        :raise UnificationException: If 'self' and 'other' cannot be unified in the context of 'bindings'
        )r[   rC   r=   ÚBindingDictÚVariableBindingExceptionÚUnificationException)r   rK   r`   s      r   ÚunifyzConstantExpression.unify    s‹   € õ ˜%¥Ñ,Ô,Ð,Ð,Ð,Ý�eÕ/Ñ0Ô0ð 	ðØ¥+°°t¨}¨oÑ">Ô">Ñ>Ð>øÝ+ð ð ð Ø�ðøøøà�UŠ]ˆ]ØˆOÝ" 4¨°Ñ9Ô9Ð9s   ®A Á
AÁAN©r
   r   r   rƒ   r   r   r   r>   r>   Ÿ   s#   € € € € € ð:ð :ð :ð :ð :r   r>   c                   ó   — e Zd Zd„ ZdS )r=   c                 ó´   — t          |t          ¦  «        sJ ‚	 | |k    r|S |t          | |fg¦  «        z   S # t          $ r}t	          | ||¦  «        |‚d}~ww xY w)aˆ  
        'self' must not be bound to anything other than 'other'.

        :param other: ``Expression``
        :param bindings: ``BindingDict`` A dictionary of all current bindings
        :return: ``BindingDict`` A new combined dictionary of of 'bindings' and the new binding
        :raise UnificationException: If 'self' and 'other' cannot be unified in the context of 'bindings'
        N)r[   rC   r€   r�   r‚   ©r   rK   r`   Úes       r   rƒ   zVariableExpression.unify¶   s~   € õ ˜%¥Ñ,Ô,Ð,Ð,Ð,ð	EØ�uŠ}ˆ}Ø�à¥+°°e¨}¨oÑ">Ô">Ñ>Ð>øÝ'ð 	Eð 	Eð 	EÝ& t¨U°HÑ=Ô=À1ÐDøøøøð	Eøøøs   ™6 ¡6 ¶
AÁ AÁANr„   r   r   r   r=   r=   µ   s(   € € € € € ðEð Eð Eð Eð Er   r=   c                   óL   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ ZdS )r*   c                 ó~   — t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|| _        || _        dS )zƒ
        :param antecedent: ``Expression`` for the antecedent
        :param consequent: ``Expression`` for the consequent
        N)r[   rC   Ú
antecedentÚ
consequent)r   r‹   rŒ   s      r   r   zImpExpression.__init__Ê   sB   € õ
 ˜*¥jÑ1Ô1Ð1Ð1Ð1Ý˜*¥jÑ1Ô1Ð1Ð1Ð1Ø$ˆŒØ$ˆŒˆˆr   Nc                 óŽ   — |                       | j                             |¦  «        | j                             |¦  «        ¦  «        S r!   )rU   r‹   ra   rŒ   r_   s     r   ra   zImpExpression.simplifyÔ   s=   € Ø�~Š~ØŒO×$Ò$ XÑ.Ô.°´×0HÒ0HÈÑ0RÔ0Rñ
ô 
ð 	
r   c                 ó  — t          |t          ¦  «        sJ ‚	 || j                             |j        |¦  «        z   | j                             |j        |¦  «        z   S # t
          $ r}t          | ||¦  «        |‚d}~ww xY w)a˜  
        Both the antecedent and consequent of 'self' and 'other' must unify.

        :param other: ``ImpExpression``
        :param bindings: ``BindingDict`` A dictionary of all current bindings
        :return: ``BindingDict`` A new combined dictionary of of 'bindings' and any new bindings
        :raise UnificationException: If 'self' and 'other' cannot be unified in the context of 'bindings'
        N)r[   r*   r‹   rƒ   rŒ   r�   r‚   r‡   s       r   rƒ   zImpExpression.unifyÙ   s�   € õ ˜%¥Ñ/Ô/Ð/Ð/Ð/ð	EàØ”/×'Ò'¨Ô(8¸(ÑCÔCñDà”/×'Ò'¨Ô(8¸(ÑCÔCñDðøõ
 (ð 	Eð 	Eð 	EÝ& t¨U°HÑ=Ô=À1ÐDøøøøð	Eøøøs   ™AA Á
A>Á'A9Á9A>c                 ó¤   — | j                              ||¦  «        \  }}| j                             ||¦  «        \  }}t	          ||¦  «        ||z   fS rc   )r‹   rk   rŒ   rh   r*   )r   rf   rg   ÚaÚa_newÚcÚc_news          r   rh   zImpExpression.compile_posì   sU   € ð ”_×0Ò0°Ð@RÑSÔS‰
ˆˆEØ”_×0Ò0°Ð@RÑSÔS‰
ˆˆEÝ˜a Ñ#Ô# U¨U¡]Ð3Ð3r   c                 ó  — | j                              ||¦  «        \  }}| j                             ||¦  «        \  }}|                     ¦   «         }|j                             |¦  «          |d|z  ||h¦  «        }|||z   |gz   fS )aG  
        From Iddo Lev's PhD Dissertation p108-109

        :param index_counter: ``Counter`` for unique indices
        :param glueFormulaFactory: ``GlueFormula`` for creating new glue formulas
        :return: (``Expression``,list of ``GlueFormula``) for the compiled linear logic and any newly created glue formulas
        zv%s)r‹   rh   rŒ   rk   Úgetr]   Úappend)	r   rf   rg   r�   r‘   r’   r“   Úfresh_indexÚnew_vs	            r   rk   zImpExpression.compile_negø   s”   € ð ”_×0Ò0°Ð@RÑSÔS‰
ˆˆEØ”_×0Ò0°Ð@RÑSÔS‰
ˆˆEØ#×'Ò'Ñ)Ô)ˆØ	Œ×Ò˜kÑ*Ô*Ð*Ø"Ð" 5¨;Ñ#6¸¸K¸=ÑIÔIˆØ�5˜5‘= E 7Ñ*Ð+Ð+r   c                 ón   — | j                              |¦  «         | j                             |¦  «         d S r!   )r‹   rq   rŒ   ro   s     r   rq   zImpExpression.initialize_labels  s4   € ØŒ×)Ò)¨'Ñ2Ô2Ð2ØŒ×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2r   c                 ób   — | j         |j         k    o| j        |j        k    o| j        |j        k    S r!   )rU   r‹   rŒ   rO   s     r   rs   zImpExpression.__eq__  s7   € àŒN˜eœoÒ-ð 4Ø” 5Ô#3Ò3ð4à” 5Ô#3Ò3ð	
r   c                 ó   — | |k     S r!   r   rO   s     r   ru   zImpExpression.__ne__  rv   r   c                 ó„   — d                      t          j        | j        t          j        | j        t          j        ¦  «        S )Nz{}{} {} {}{})Úformatr   r   r‹   r   rŒ   r   r   s    r   rz   zImpExpression.__str__  s3   € Ø×$Ò$ÝŒKØŒOÝŒJØŒOÝŒLñ
ô 
ð 	
r   c                 óˆ   — t          t          | j        ¦  «        › t          j        › t          | j        ¦  «        › �¦  «        S r!   )r|   r‹   r   r   rŒ   r   s    r   r}   zImpExpression.__hash__  s6   € Ý•t˜DœOÑ,Ô,ÐQ­f¬jÐQ½$¸t¼Ñ:OÔ:OÐQÐQÑRÔRÐRr   r!   )r
   r   r   r   ra   rƒ   rh   rk   rq   rs   ru   rz   r}   r   r   r   r*   r*   É   s·   € € € € € ð%ð %ð %ð
ð 
ð 
ð 
ð
Eð Eð Eð&
4ð 
4ð 
4ð,ð ,ð ,ð3ð 3ð 3ð
ð 
ð 
ð!ð !ð !ð
ð 
ð 
ðSð Sð Sð Sð Sr   r*   c                   ó6   — e Zd Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )	r7   Nc           	      óÖ  — |                      ¦   «         }|                      ¦   «         }t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t	          ¦   «         }	 t          |t
          ¦  «        r
||j        z  }t          |t
          ¦  «        r
||j        z  }||j                             ||¦  «        z  }n+# t          $ r}t          d|› d|› d|› �¦  «        |‚d}~ww xY w|rdt          |j        j        ¦  «        |k     st          d|›d|›�¦  «        ‚t          |j        j        ¦  «        |k    rt          d|›d|›�¦  «        ‚|| _        || _        || _        dS )aY  
        :param function: ``Expression`` for the function
        :param argument: ``Expression`` for the argument
        :param argument_indices: set for the indices of the glue formula from which the argument came
        :raise LinearLogicApplicationException: If 'function' cannot be applied to 'argument' given 'argument_indices'.
        zCannot apply z to z. NzGDependencies unfulfilled when attempting to apply Linear Logic formula zZDependencies not a proper subset of indices when attempting to apply Linear Logic formula )ra   r[   r*   rC   r€   r7   r`   r‹   rƒ   r‚   ÚLinearLogicApplicationExceptionÚsetr]   Úfunctionr9   )r   r£   r9   Úargument_indicesÚfunction_simpÚargument_simpr`   rˆ   s           r   r   zApplicationExpression.__init__#  s³  € ð !×)Ò)Ñ+Ô+ˆØ ×)Ò)Ñ+Ô+ˆå˜-­Ñ7Ô7Ð7Ð7Ð7Ý˜-­Ñ4Ô4Ð4Ð4Ð4å‘=”=ˆð		Ý˜(Õ$9Ñ:Ô:ð .Ø˜HÔ-Ñ-�Ý˜(Õ$9Ñ:Ô:ð .Ø˜HÔ-Ñ-�Ø˜Ô0×6Ò6°}ÀhÑOÔOÑOˆHˆHøÝ#ð 	ð 	ð 	Ý1ØG ÐGÐG°=ÐGÐGÀAÐGÐGñô àðøøøøð	øøøð ð 	å�}Ô/Ô<Ñ=Ô=Ð@PÒPÐPÝ5Ð5à$�}�} m mð5ñô ð õ �=Ô+Ô8Ñ9Ô9Ð=MÒMÐMÝ5Ð5à$�}�} m mð5ñô ð ð
 !ˆŒØ ˆŒØ ˆŒˆˆs   Á&AC Ã
C+ÃC&Ã&C+c                 óR   — |s| j         }| j                             |¦  «        j        S )a=  
        Since function is an implication, return its consequent.  There should be
        no need to check that the application is valid since the checking is done
        by the constructor.

        :param bindings: ``BindingDict`` A dictionary of bindings used to simplify
        :return: ``Expression``
        )r`   r£   ra   rŒ   r_   s     r   ra   zApplicationExpression.simplifyO  s,   € ð ð 	%Ø”}ˆHàŒ}×%Ò% hÑ/Ô/Ô:Ð:r   c                 ób   — | j         |j         k    o| j        |j        k    o| j        |j        k    S r!   )rU   r£   r9   rO   s     r   rs   zApplicationExpression.__eq__]  s5   € àŒN˜eœoÒ-ð 0Ø” ¤Ò/ð0à” ¤Ò/ð	
r   c                 ó   — | |k     S r!   r   rO   s     r   ru   zApplicationExpression.__ne__d  rv   r   c                 ó`   — d| j         z  t          j        z   d| j        z  z   t          j        z   S rx   )r£   r   r   r9   r   r   s    r   rz   zApplicationExpression.__str__g  s)   € Ø�d”mÑ#¥f¤kÑ1°D¸4¼=Ñ4HÑHÍ6Ì<ÑWÐWr   c                 óˆ   — t          t          | j        ¦  «        › t          j        › t          | j        ¦  «        › �¦  «        S r!   )r|   r‹   r   r   rŒ   r   s    r   r}   zApplicationExpression.__hash__j  s6   € Ý•t˜DœOÑ,Ô,ÐR­f¬kÐR½4ÀÄÑ;PÔ;PÐRÐRÑSÔSÐSr   r!   )	r
   r   r   r   ra   rs   ru   rz   r}   r   r   r   r7   r7   "  s�   € € € € € ð*!ð *!ð *!ð *!ðX;ð ;ð ;ð ;ð
ð 
ð 
ð!ð !ð !ðXð Xð XðTð Tð Tð Tð Tr   r7   c                   óF   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )r€   Nc                 óˆ   — i | _         t          |t          ¦  «        r|                     ¦   «         }|r|D ]\  }}|| |<   ŒdS dS )zÞ
        :param bindings:
            list [(``VariableExpression``, ``AtomicExpression``)] to initialize the dictionary
            dict {``VariableExpression``: ``AtomicExpression``} to initialize the dictionary
        N)Údr[   ÚdictÚitems)r   r`   ÚvÚbs       r   r   zBindingDict.__init__o  sf   € ð ˆŒå�h¥Ñ%Ô%ð 	(Ø—~’~Ñ'Ô'ˆHàð 	Ø"ð ð ‘��AØ��Q‘�ð	ð 	ðð r   c                 óð   — t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚||k    sJ ‚| j                             |d¦  «        }|r||k    r|| j        |<   dS t          d|z  ¦  «        ‚)a“  
        A binding is consistent with the dict if its variable is not already bound, OR if its
        variable is already bound to its argument.

        :param variable: ``VariableExpression`` The variable bind
        :param binding: ``Expression`` The expression to which 'variable' should be bound
        :raise VariableBindingException: If the variable cannot be bound in this dictionary
        Nz*Variable %s already bound to another value)r[   r=   rC   r®   r•   r�   )r   ÚvariableÚbindingÚexistings       r   Ú__setitem__zBindingDict.__setitem__~  s•   € õ ˜(Õ$6Ñ7Ô7Ð7Ð7Ð7Ý˜'¥:Ñ.Ô.Ð.Ð.Ð.à˜7Ò"Ð"Ð"Ð"à”6—:’:˜h¨Ñ-Ô-ˆàð 	˜7 hÒ.Ð.Ø&ˆDŒF�8ÑÐÐå*Ø<ÀÑIñô ð r   c                 óœ   — t          |t          ¦  «        sJ ‚| j        |         }|r%	 | j        |         }n# t          $ r |cY S w xY w|°#dS dS )zD
        Return the expression to which 'variable' is bound
        N)r[   r=   r®   ÚKeyError)r   r´   Úintermediates      r   Ú__getitem__zBindingDict.__getitem__•  s‡   € õ ˜(Õ$6Ñ7Ô7Ð7Ð7Ð7à”v˜hÔ'ˆØð 	$ð$Ø#œv lÔ3��øÝð $ð $ð $Ø#Ð#Ð#Ð#ð$øøøð ð 	$ð 	$ð 	$ð 	$ð 	$s   ¨6 ¶AÁAc                 ó   — || j         v S r!   ©r®   )r   Úitems     r   Ú__contains__zBindingDict.__contains__¢  s   € Ø�t”vˆ~Ðr   c                 óÜ   — 	 t          ¦   «         }| j        D ]}| j        |         ||<   Œ|j        D ]}|j        |         ||<   Œ|S # t          $ r}t          d| ›d|›�¦  «        |‚d}~ww xY w)a  
        :param other: ``BindingDict`` The dict with which to combine self
        :return: ``BindingDict`` A new dict containing all the elements of both parameters
        :raise VariableBindingException: If the parameter dictionaries are not consistent with each other
        z;Attempting to add two contradicting VariableBindingsLists: ú, N)r€   r®   r�   )r   rK   Úcombinedr±   rˆ   s        r   Ú__add__zBindingDict.__add__¥  s£   € ð	Ý"‘}”}ˆHØ”Vð (ð (�Ø"œf Qœi�˜‘�Ø”Wð )ð )�Ø#œg aœj�˜‘�ØˆOøÝ'ð 	ð 	ð 	Ý*Ð*à48°D°D¸%¸%ðAñô ð ðøøøøð	øøøs   ‚AA Á
A+ÁA&Á&A+c                 ó   — | |k     S r!   r   rO   s     r   ru   zBindingDict.__ne__¸  rv   r   c                 óZ   — t          |t          ¦  «        st          ‚| j        |j        k    S r!   )r[   r€   Ú	TypeErrorr®   rO   s     r   rs   zBindingDict.__eq__»  s(   € Ý˜%¥Ñ-Ô-ð 	ÝˆOØŒv˜œÒ Ð r   c                 óš   ‡ — dd                      ˆ fd„t          ‰ j                             ¦   «         ¦  «        D ¦   «         ¦  «        z   dz   S )Nú{rÁ   c              3   ó<   •K  — | ]}|› d ‰j         |         › �V — ŒdS )z: Nr½   )Ú.0r±   r   s     €r   ú	<genexpr>z&BindingDict.__str__.<locals>.<genexpr>Á  s7   øè è € ÐRÐR°q !Ð2Ð2 t¤v¨a¤yÐ2Ð2ÐRÐRÐRÐRÐRÐRr   ú})ÚjoinÚsortedr®   Úkeysr   s   `r   rz   zBindingDict.__str__À  sG   ø€ Ø�T—Y’YÐRÐRÐRÐR½FÀ4Ä6Ç;Â;Á=Ä=Ñ<QÔ<QÐRÑRÔRÑRÔRÑRÐUXÑXÐXr   c                 ó   — d| z  S )NzBindingDict: %sr   r   s    r   rV   zBindingDict.__repr__Ã  s   € Ø  4Ñ'Ð'r   r!   )r
   r   r   r   r·   r»   r¿   rÃ   ru   rs   rz   rV   r   r   r   r€   r€   n  s£   € € € € € ðð ð ð ðð ð ð.$ð $ð $ðð ð ðð ð ð&!ð !ð !ð!ð !ð !ð
Yð Yð Yð(ð (ð (ð (ð (r   r€   c                   ó   — e Zd ZdS )r�   N©r
   r   r   r   r   r   r�   r�   Ç  ó   € € € € € Ø€Dr   r�   c                   ó   — e Zd Zd„ ZdS )r‚   c           	      óN   — t                                | d|› d|› d|› �¦  «         d S )NzCannot unify z with z given )Ú	Exceptionr   )r   r�   r²   r`   s       r   r   zUnificationException.__init__Ì  s7   € Ý×Ò˜4Ð!N°Ð!NÐ!N¸!Ð!NÐ!NÀHÐ!NÐ!NÑOÔOÐOÐOÐOr   N)r
   r   r   r   r   r   r   r‚   r‚   Ë  s(   € € € € € ðPð Pð Pð Pð Pr   r‚   c                   ó   — e Zd ZdS )r¡   NrÒ   r   r   r   r¡   r¡   Ð  rÓ   r   r¡   c                  ó.  — t           j        } t           | d¦  «        ¦  «         t           | d¦  «        ¦  «         t           | d¦  «        ¦  «         t           | d¦  «        ¦  «         t           | d¦  «                             ¦   «         ¦  «         t           | d¦  «                             ¦   «         ¦  «         t           | d¦  «                             ¦   «         ¦  «         t           | d¦  «                             ¦   «         ¦  «         d S )	NÚfz(g -o f)z((g -o G) -o G)zg -o h -o fz(g -o f)(g)z(H -o f)(g)z((g -o G) -o G)((g -o f))z(H -o H)((g -o f)))rC   rI   Úprintra   )Úlexprs    r   ÚdemorÜ   Ô  s  € ÝÔ!€Eå	ˆ%ˆ%�‰+Œ+ÑÔÐÝ	ˆ%ˆ%�Ñ
Ô
ÑÔÐÝ	ˆ%ˆ%Ð"Ñ
#Ô
#Ñ$Ô$Ð$Ý	ˆ%ˆ%�Ñ
Ô
Ñ Ô Ð Ý	ˆ%ˆ%�Ñ
Ô
×
(Ò
(Ñ
*Ô
*Ñ+Ô+Ð+Ý	ˆ%ˆ%�Ñ
Ô
×
(Ò
(Ñ
*Ô
*Ñ+Ô+Ð+Ý	ˆ%ˆ%Ð,Ñ
-Ô
-×
6Ò
6Ñ
8Ô
8Ñ9Ô9Ð9Ý	ˆ%ˆ%Ð%Ñ
&Ô
&×
/Ò
/Ñ
1Ô
1Ñ2Ô2Ð2Ð2Ð2r   Ú__main__N)Únltk.internalsr   Únltk.sem.logicr   r   Ú_counterr   r   rC   rY   r>   r=   r*   r7   r€   rÖ   r�   r‚   r¡   rÜ   r
   r   r   r   ú<module>rá      s¨  ðð #Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +àˆ7‰9Œ9€ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð,,ð ,,ð ,,ð ,,ð ,,˜ñ ,,ô ,,ð ,,ð^5ð 5ð 5ð 5ð 5ñ 5ô 5ð 5ð$@ð @ð @ð @ð @�zñ @ô @ð @ðF:ð :ð :ð :ð :Ð)ñ :ô :ð :ð,Eð Eð Eð Eð EÐ)ñ Eô Eð Eð(VSð VSð VSð VSð VS�Jñ VSô VSð VSðrITð ITð ITð ITð IT˜Jñ ITô ITð ITðXV(ð V(ð V(ð V(ð V(ñ V(ô V(ð V(ðr	ð 	ð 	ð 	ð 	˜yñ 	ô 	ð 	ðPð Pð Pð Pð P˜9ñ Pô Pð Pð
	ð 	ð 	ð 	ð 	 iñ 	ô 	ð 	ð
3ð 
3ð 
3ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr   