§
    'ê[f‰)  ã                   óº  — d Z ddlmZmZ ddlm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
d„ Zd„ Z e e
¦   «         e¦  «        Z e	 e
¦   «         e¦  «        Z G d„ de¦  «        Zd„ Zd„ Zd„ Zd„ Z e e¦   «         e¦  «        Z e	 e¦   «         e¦  «        Z e	 e¦   «         ed¬¦  «        Z G d„ de¦  «        Zd„ Zd„ Z e e¦   «         e¦  «        Z e	 e¦   «         ed¦  «        Zd„ Z G d„ de¦  «        Zd „ Zd!„ Z e e¦   «         e¦  «        Z  e	 e¦   «         e¦  «        Z!d"S )#z
CCG Combinators
é    )ÚABCMetaÚabstractmethod)ÚFunctionalCategoryc                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚUndirectedBinaryCombinatora«  
    Abstract class for representing a binary combinator.
    Merely defines functions for checking if the function and argument
    are able to be combined, and what the resulting category is.

    Note that as no assumptions are made as to direction, the unrestricted
    combinators can perform all backward, forward and crossed variations
    of the combinators; these restrictions must be added in the rule
    class.
    c                 ó   — d S ©N© ©ÚselfÚfunctionÚarguments      úG/var/www/piapp/venv/lib/python3.11/site-packages/nltk/ccg/combinator.pyÚcan_combinez&UndirectedBinaryCombinator.can_combine   ó   € àˆó    c                 ó   — d S r	   r
   r   s      r   Úcombinez"UndirectedBinaryCombinator.combine    r   r   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r
   r   r   r   r      sT   € € € € € ð	ð 	ð ðð ñ „^ðð ðð ñ „^ðð ð r   r   )Ú	metaclassc                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚDirectedBinaryCombinatorzÝ
    Wrapper for the undirected binary combinator.
    It takes left and right categories, and decides which is to be
    the function, and which the argument.
    It then decides whether or not they can be combined.
    c                 ó   — d S r	   r
   ©r   ÚleftÚrights      r   r   z$DirectedBinaryCombinator.can_combine-   r   r   c                 ó   — d S r	   r
   r   s      r   r   z DirectedBinaryCombinator.combine1   r   r   Nr   r
   r   r   r   r   %   sT   € € € € € ðð ð ðð ñ „^ðð ðð ñ „^ðð ð r   r   c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )	ÚForwardCombinatorzÏ
    Class representing combinators where the primary functor is on the left.

    Takes an undirected combinator, and a predicate which adds constraints
    restricting the cases in which it may apply.
    Ú c                 ó0   — || _         || _        || _        d S r	   ©Ú_combinatorÚ
_predicateÚ_suffix©r   Ú
combinatorÚ	predicateÚsuffixs       r   Ú__init__zForwardCombinator.__init__>   ó   € Ø%ˆÔØ#ˆŒØˆŒˆˆr   c                 ód   — | j                              ||¦  «        o|                      ||¦  «        S r	   ©r'   r   r(   r   s      r   r   zForwardCombinator.can_combineC   s7   € ØÔ×+Ò+¨D°%Ñ8Ô8ð 
¸T¿_º_Ø�%ñ>
ô >
ð 	
r   c              #   óL   K  — | j                              ||¦  «        E d {V —† d S r	   ©r'   r   r   s      r   r   zForwardCombinator.combineH   s7   è è € ØÔ#×+Ò+¨D°%Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ó$   — d| j         › | j        › �S )NÚ>©r'   r)   ©r   s    r   Ú__str__zForwardCombinator.__str__K   ó   € Ø3�4Ô#Ð3 T¤\Ð3Ð3Ð3r   N©r$   ©r   r   r   r   r.   r   r   r8   r
   r   r   r#   r#   6   s_   € € € € € ðð ðð ð ð ð

ð 
ð 
ð
9ð 9ð 9ð4ð 4ð 4ð 4ð 4r   r#   c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )	ÚBackwardCombinatorzA
    The backward equivalent of the ForwardCombinator class.
    r$   c                 ó0   — || _         || _        || _        d S r	   r&   r*   s       r   r.   zBackwardCombinator.__init__T   r/   r   c                 ód   — | j                              ||¦  «        o|                      ||¦  «        S r	   r1   r   s      r   r   zBackwardCombinator.can_combineY   s7   € ØÔ×+Ò+¨E°4Ñ8Ô8ð 
¸T¿_º_Ø�%ñ>
ô >
ð 	
r   c              #   óL   K  — | j                              ||¦  «        E d {V —† d S r	   r3   r   s      r   r   zBackwardCombinator.combine^   s7   è è € ØÔ#×+Ò+¨E°4Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ó$   — d| j         › | j        › �S )NÚ<r6   r7   s    r   r8   zBackwardCombinator.__str__a   r9   r   Nr:   r;   r
   r   r   r=   r=   O   s_   € € € € € ðð ðð ð ð ð

ð 
ð 
ð
9ð 9ð 9ð4ð 4ð 4ð 4ð 4r   r=   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚUndirectedFunctionApplicationzœ
    Class representing function application.
    Implements rules of the form:
    X/Y Y -> X (>)
    And the corresponding backwards application rule
    c                 ó€   — |                      ¦   «         sdS |                     ¦   «                              |¦  «        d uS ©NF)Úis_functionÚargÚ	can_unifyr   s      r   r   z)UndirectedFunctionApplication.can_combinem   s<   € Ø×#Ò#Ñ%Ô%ð 	Ø�5à—<’<‘>”>×+Ò+¨HÑ5Ô5¸Ð=Ð=r   c              #   óÞ   K  — |                      ¦   «         sd S |                     ¦   «                              |¦  «        }|€d S |                     ¦   «                              |¦  «        V — d S r	   )rG   rH   rI   ÚresÚ
substitute©r   r   r   Úsubss       r   r   z%UndirectedFunctionApplication.combines   sl   è è € Ø×#Ò#Ñ%Ô%ð 	ØˆFà�|Š|‰~Œ~×'Ò'¨Ñ1Ô1ˆØˆ<ØˆFà�lŠl‰nŒn×'Ò'¨Ñ-Ô-Ð-Ð-Ð-Ð-Ð-r   c                 ó   — dS )Nr$   r
   r7   s    r   r8   z%UndirectedFunctionApplication.__str__}   s   € Øˆrr   N©r   r   r   r   r   r   r8   r
   r   r   rD   rD   e   sK   € € € € € ðð ð>ð >ð >ð.ð .ð .ðð ð ð ð r   rD   c                 óN   — |                       ¦   «                              ¦   «         S r	   ©ÚdirÚ
is_forward©r   r    s     r   ÚforwardOnlyrV   „   s   € Ø�8Š8‰:Œ:× Ò Ñ"Ô"Ð"r   c                 óN   — |                      ¦   «                              ¦   «         S r	   ©rS   Úis_backwardrU   s     r   ÚbackwardOnlyrZ   ‰   s   € Ø�9Š9‰;Œ;×"Ò"Ñ$Ô$Ð$r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚUndirectedCompositionz¬
    Functional composition (harmonic) combinator.
    Implements rules of the form
    X/Y Y/Z -> X/Z (B>)
    And the corresponding backwards and crossed variations.
    c                 óh  — |                      ¦   «         r|                      ¦   «         sdS |                     ¦   «                              ¦   «         ra|                     ¦   «                              ¦   «         r;|                     ¦   «                              |                     ¦   «         ¦  «        d uS dS rF   )rG   rS   Úcan_composerH   rI   rK   r   s      r   r   z!UndirectedComposition.can_combineš   s—   € ð ×$Ò$Ñ&Ô&ð 	¨8×+?Ò+?Ñ+AÔ+Að 	Ø�5Ø�<Š<‰>Œ>×%Ò%Ñ'Ô'ð 	H¨H¯LªL©N¬N×,FÒ,FÑ,HÔ,Hð 	HØ—|’|‘~”~×/Ò/°·²±´Ñ?Ô?À4ÐGÐGØˆur   c              #   óV  K  — |                      ¦   «         r|                      ¦   «         sd S |                     ¦   «                              ¦   «         rÒ|                     ¦   «                              ¦   «         r®|                     ¦   «                              |                     ¦   «         ¦  «        }|�ut          |                     ¦   «                              |¦  «        |                     ¦   «                              |¦  «        |                     ¦   «         ¦  «        V — d S d S d S d S r	   )rG   rS   r^   rH   rI   rK   r   rL   rM   s       r   r   zUndirectedComposition.combine£   s  è è € Ø×$Ò$Ñ&Ô&ð 	¨8×+?Ò+?Ñ+AÔ+Að 	ØˆFØ�<Š<‰>Œ>×%Ò%Ñ'Ô'ð 	¨H¯LªL©N¬N×,FÒ,FÑ,HÔ,Hð 	Ø—<’<‘>”>×+Ò+¨H¯LªL©N¬NÑ;Ô;ˆDØÐÝ(Ø—L’L‘N”N×-Ò-¨dÑ3Ô3Ø—L’L‘N”N×-Ò-¨dÑ3Ô3Ø—L’L‘N”Nñô ð ð ð ð ð ð	ð 	ð 	ð 	àÐr   c                 ó   — dS )NÚBr
   r7   s    r   r8   zUndirectedComposition.__str__¯   ó   € Øˆsr   NrP   r
   r   r   r\   r\   ’   sK   € € € € € ðð ðð ð ð
ð 
ð 
ðð ð ð ð r   r\   c                 óš   — |                       ¦   «                              ¦   «         o%|                      ¦   «                              ¦   «         S r	   rR   rU   s     r   ÚbothForwardrd   ´   s5   € Ø�8Š8‰:Œ:× Ò Ñ"Ô"Ð? u§y¢y¡{¤{×'=Ò'=Ñ'?Ô'?Ð?r   c                 óš   — |                       ¦   «                              ¦   «         o%|                      ¦   «                              ¦   «         S r	   rX   rU   s     r   ÚbothBackwardrf   ¸   s5   € Ø�8Š8‰:Œ:×!Ò!Ñ#Ô#ÐA¨¯	ª	©¬×(?Ò(?Ñ(AÔ(AÐAr   c                 óš   — |                       ¦   «                              ¦   «         o%|                      ¦   «                              ¦   «         S r	   )rS   rT   rY   rU   s     r   ÚcrossedDirsrh   ½   s5   € Ø�8Š8‰:Œ:× Ò Ñ"Ô"Ð@ u§y¢y¡{¤{×'>Ò'>Ñ'@Ô'@Ð@r   c                 ó  — t          | |¦  «        sdS |                      ¦   «                              ¦   «         s(|                     ¦   «                              ¦   «         rdS |                      ¦   «                              ¦   «         S rF   )rh   rS   Ú	can_crossrH   Úis_primitiverU   s     r   ÚbackwardBxConstraintrl   Á   so   € å�t˜UÑ#Ô#ð Øˆuà�8Š8‰:Œ:×ÒÑ!Ô!ð  e§i¢i¡k¤k×&;Ò&;Ñ&=Ô&=ð Øˆuà�8Š8‰:Œ:×"Ò"Ñ$Ô$Ð$r   Úx)r-   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚUndirectedSubstitutionzˆ
    Substitution (permutation) combinator.
    Implements rules of the form
    Y/Z (X\Y)/Z -> X/Z (<Sx)
    And other variations.
    c                 ó^  — |                      ¦   «         s|                      ¦   «         rdS |                     ¦   «                               ¦   «         rdS |                     ¦   «                               ¦   «         sdS |                     ¦   «                              ¦   «         r&|                     ¦   «                              ¦   «         sdS |                     ¦   «                              ¦   «         |                     ¦   «         k    o)|                     ¦   «         |                     ¦   «         k    S rF   )rk   rK   rH   rS   r^   r   s      r   r   z"UndirectedSubstitution.can_combineÞ   sô   € Ø× Ò Ñ"Ô"ð 	 h×&;Ò&;Ñ&=Ô&=ð 	Ø�5ð �<Š<‰>Œ>×&Ò&Ñ(Ô(ð 	Ø�5Ø�|Š|‰~Œ~×*Ò*Ñ,Ô,ð 	Ø�5à—’‘”×*Ò*Ñ,Ô,ð 	°·²±´×1KÒ1KÑ1MÔ1Mð 	Ø�5Ø—’‘”×"Ò"Ñ$Ô$¨¯ª©¬Ò6ð 
Ø�LŠL‰NŒN˜hŸlšl™nœnÒ,ð	
r   c              #   óð   K  — |                       ||¦  «        r]t          |                     ¦   «                              ¦   «         |                     ¦   «         |                     ¦   «         ¦  «        V — d S d S r	   )r   r   rK   rH   rS   r   s      r   r   zUndirectedSubstitution.combineï   sy   è è € Ø×Ò˜H hÑ/Ô/ð 	Ý$Ø—’‘”×"Ò"Ñ$Ô$ h§l¢l¡n¤n°h·l²l±n´nñô ð ð ð ð ð ð	ð 	r   c                 ó   — dS )NÚSr
   r7   s    r   r8   zUndirectedSubstitution.__str__õ   rb   r   NrP   r
   r   r   ro   ro   Ö   sK   € € € € € ðð ð
ð 
ð 
ð"ð ð ðð ð ð ð r   ro   c                 óâ   — t          | |¦  «        sdS |                      ¦   «                              ¦   «                              ¦   «         o%|                      ¦   «                              ¦   «         S rF   )rd   rK   rS   rT   rH   rk   rU   s     r   ÚforwardSConstraintru   ú   sV   € Ý�t˜UÑ#Ô#ð ØˆuØ�8Š8‰:Œ:�>Š>ÑÔ×&Ò&Ñ(Ô(ÐF¨T¯XªX©Z¬Z×-DÒ-DÑ-FÔ-FÐFr   c                 ó~  — |                       ¦   «                              ¦   «         s(|                      ¦   «                              ¦   «         rdS t          | |¦  «        sdS |                     ¦   «                               ¦   «                              ¦   «         o%|                     ¦   «                              ¦   «         S rF   )rS   rj   rd   rK   rY   rH   rk   rU   s     r   ÚbackwardSxConstraintrw     s’   € Ø�8Š8‰:Œ:×ÒÑ!Ô!ð  e§i¢i¡k¤k×&;Ò&;Ñ&=Ô&=ð ØˆuÝ�t˜UÑ#Ô#ð ØˆuØ�9Š9‰;Œ;�?Š?ÑÔ×(Ò(Ñ*Ô*ÐI¨u¯yªy©{¬{×/GÒ/GÑ/IÔ/IÐIr   c                 óÆ   — |                       ¦   «                              ¦   «         r:|                       ¦   «         } |                       ¦   «                              ¦   «         °:| S r	   )rK   rG   )Úcategs    r   ÚinnermostFunctionrz     sN   € Ø
�)Š)‰+Œ+×
!Ò
!Ñ
#Ô
#ð Ø—	’	‘”ˆð �)Š)‰+Œ+×
!Ò
!Ñ
#Ô
#ð à€Lr   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚUndirectedTypeRaisez1
    Undirected combinator for type raising.
    c                 ó  — |                      ¦   «         r&|                     ¦   «                               ¦   «         sdS t          |¦  «        }t                               t
                               ¦   «         ¦  «        }|�dS dS )NFT)rG   rK   rz   r   rI   Ú	arg_categrH   )r   r   rH   rN   s       r   r   zUndirectedTypeRaise.can_combine  sn   € ð —’Ñ!Ô!ð 	 c§g¢g¡i¤i×&;Ò&;Ñ&=Ô&=ð 	Ø�5å Ñ$Ô$ˆõ �~Š~�iŸmšm™oœoÑ.Ô.ˆØÐØ�4Øˆur   c           	   #   óú  K  — |                      ¦   «         r:|                     ¦   «         r&|                     ¦   «                              ¦   «         sd S t          |¦  «        }|                     |                     ¦   «         ¦  «        }|�p|                     ¦   «                              |¦  «        }t          |t          |||                     ¦   «         ¦  «        |                     ¦   «          ¦  «        V — d S d S r	   )	rk   rG   rK   rz   rI   rH   rL   r   rS   )r   r   rH   rN   Úxcats        r   r   zUndirectedTypeRaise.combine.  sî   è è € à×!Ò!Ñ#Ô#ð	Ø(+¯ªÑ(9Ô(9ð	Ø>A¿gºg¹i¼i×>SÒ>SÑ>UÔ>Uð	ð ˆFõ   Ñ$Ô$ˆà×!Ò! #§'¢'¡)¤)Ñ,Ô,ˆØÐØ—7’7‘9”9×'Ò'¨Ñ-Ô-ˆDÝ$ØÕ(¨¨x¸¿º¹¼ÑCÔCÀsÇwÂwÁyÄyÀ\ñô ð ð ð ð ð ð Ðr   c                 ó   — dS )NÚTr
   r7   s    r   r8   zUndirectedTypeRaise.__str__>  rb   r   NrP   r
   r   r   r|   r|     sK   € € € € € ðð ðð ð ð&ð ð ð ð ð ð ð r   r|   c                 ó¸   — t          |¦  «        }|                     ¦   «                              ¦   «         o%|                     ¦   «                              ¦   «         S r	   )rz   rS   rY   rK   rk   ©r   r    rH   s      r   ÚforwardTConstraintr…   G  sB   € Ý
˜EÑ
"Ô
"€CØ�7Š7‰9Œ9× Ò Ñ"Ô"Ð? s§w¢w¡y¤y×'=Ò'=Ñ'?Ô'?Ð?r   c                 ó¸   — t          | ¦  «        }|                     ¦   «                              ¦   «         o%|                     ¦   «                              ¦   «         S r	   )rz   rS   rT   rK   rk   r„   s      r   ÚbackwardTConstraintr‡   L  sB   € Ý
˜DÑ
!Ô
!€CØ�7Š7‰9Œ9×ÒÑ!Ô!Ð> c§g¢g¡i¤i×&<Ò&<Ñ&>Ô&>Ð>r   N)"r   Úabcr   r   Únltk.ccg.apir   r   r   r#   r=   rD   rV   rZ   ÚForwardApplicationÚBackwardApplicationr\   rd   rf   rh   rl   ÚForwardCompositionÚBackwardCompositionÚ
BackwardBxro   ru   rw   ÚForwardSubstitutionÚ
BackwardSxrz   r|   r…   r‡   ÚForwardTÚ	BackwardTr
   r   r   ú<module>r“      sw  ððð ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ¨7ð ñ ô ð ð*ð ð ð ð ¨ð ñ ô ð ð"4ð 4ð 4ð 4ð 4Ð0ñ 4ô 4ð 4ð24ð 4ð 4ð 4ð 4Ð1ñ 4ô 4ð 4ð,ð ð ð ð Ð$>ñ ô ð ð>#ð #ð #ð
%ð %ð %ð
 'Ð&Ð'DÐ'DÑ'FÔ'FÈÑTÔTÐ Ø(Ð(Ð)FÐ)FÑ)HÔ)HÈ,ÑWÔWÐ ðð ð ð ð Ð6ñ ô ð ðD@ð @ð @ðBð Bð Bð
Að Að Að%ð %ð %ð 'Ð&Ð'<Ð'<Ñ'>Ô'>ÀÑLÔLÐ Ø(Ð(Ð)>Ð)>Ñ)@Ô)@À,ÑOÔOÐ ð  ÐØÐÑÔÐ1¸#ðñ ô €
ð
 ð  ð  ð  ð  Ð7ñ  ô  ð  ðHGð Gð GðJð Jð Jð (Ð'Ð(>Ð(>Ñ(@Ô(@ÐBTÑUÔUÐ ØÐÐ 6Ð 6Ñ 8Ô 8Ð:NÐPSÑTÔT€
ð
ð ð ð)ð )ð )ð )ð )Ð4ñ )ô )ð )ðb@ð @ð @ð
?ð ?ð ?ð ÐÐ0Ð0Ñ2Ô2Ð4FÑGÔG€ØÐÐ2Ð2Ñ4Ô4Ð6IÑJÔJ€	€	€	r   