ó
    ´OÂfd  ã                   ó0  • S r SSKJrJr  SSKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJr  \" 5       r " S S\5      r " S S\5      r " S	 S
\5      r " S S5      r " S S5      r " S S5      rS rS r SS jr!S r"\#S:X  a  \"" 5         gg)z8
Module for a tableau-based First Order theorem prover.
é    )ÚBaseProverCommandÚProver)ÚCounter)ÚAbstractVariableExpressionÚAllExpressionÚAndExpressionÚApplicationExpressionÚEqualityExpressionÚExistsExpressionÚ
ExpressionÚFunctionVariableExpressionÚIffExpressionÚImpExpressionÚLambdaExpressionÚNegatedExpressionÚOrExpressionÚVariableÚVariableExpressionÚunique_variablec                   ó   • \ rS rSrSrg)ÚProverParseErroré%   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú8/usr/lib/python3/dist-packages/nltk/inference/tableau.pyr   r   %   s   † Úr   r   c                   ó¶   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\S 5       rSrg)ÚTableauProveré)   FNc                 óÞ  • U(       d  / nS n [        5       nU(       a  UR                  U* 5        UR                  U5        [        U5      nU R	                  U[        5       [        5       U5      nUSR                  WR                  5      4$ ! [         aU  nU R                  (       a&  [        U5      R                  S5      (       a  Sn S nAN^U(       a  [        U5         S nANuUeS nAff = f)Nz maximum recursion depth exceededFÚ
)ÚAgendaÚputÚput_allÚDebugÚ_attempt_proofÚsetÚRuntimeErrorÚ_assume_falseÚstrÚ
startswithÚprintÚjoinÚlines)ÚselfÚgoalÚassumptionsÚverboseÚresultÚagendaÚdebuggerÚes           r    Ú_proveÚTableauProver._prove,   sÁ   € ÞØˆKàˆð	Ü“XˆFÞØ—
‘
˜D˜5Ô!Ø�N‰N˜;Ô'Ü˜W“~ˆHØ×(Ñ(¨´³¼»¸xÓHˆFð ˜Ÿ	™	 (§.¡.Ó1Ð2Ð2øô ó 		Ø×!×!¤c¨!£f×&7Ñ&7Ø2÷'ñ 'ð •æÜ˜!—H‘Hà�Gûð		ús$   �A#B Â
C,Â2C'ÃC'Ã%C'Ã'C,c           	      ó
  • UR                  5       u  u  pVnU(       d  UR                  S5        g0 [        R                  U R                  _[        R
                  U R                  _[        R                  U R                  _[        R                  U R                  _[        R                  U R                  _[        R                  U R                  _[        R                  U R                   _[        R"                  U R$                  _[        R&                  U R(                  _[        R*                  U R,                  _[        R.                  U R0                  _[        R2                  U R4                  _[        R6                  U R8                  _[        R:                  U R<                  _[        R>                  U R@                  _[        RB                  U RD                  _[        RF                  U RH                  _[        RJ                  U RL                  [        RN                  U RP                  [        RR                  U RT                  [        RV                  U RX                  0EU   nUR                  XV45        U" XVXX45      $ )NzAGENDA EMPTYF)-Ú	pop_firstÚlineÚ
CategoriesÚATOMÚ_attempt_proof_atomÚPROPÚ_attempt_proof_propÚN_ATOMÚ_attempt_proof_n_atomÚN_PROPÚ_attempt_proof_n_propÚAPPÚ_attempt_proof_appÚN_APPÚ_attempt_proof_n_appÚN_EQÚ_attempt_proof_n_eqÚD_NEGÚ_attempt_proof_d_negÚN_ALLÚ_attempt_proof_n_allÚN_EXISTSÚ_attempt_proof_n_someÚANDÚ_attempt_proof_andÚN_ORÚ_attempt_proof_n_orÚN_IMPÚ_attempt_proof_n_impÚORÚ_attempt_proof_orÚIMPÚ_attempt_proof_impÚN_ANDÚ_attempt_proof_n_andÚIFFÚ_attempt_proof_iffÚN_IFFÚ_attempt_proof_n_iffÚEQÚ_attempt_proof_eqÚEXISTSÚ_attempt_proof_someÚALLÚ_attempt_proof_all)	r3   r8   Úaccessible_varsÚatomsÚdebugÚcurrentÚcontextÚcategoryÚproof_methods	            r    r*   ÚTableauProver._attempt_proofD   s&  € Ø'-×'7Ñ'7Ó'9Ñ$Ñˆ˜Hö Ø�J‰J�~Ô&Øð
Ü�O‰O˜T×5Ñ5ð
ä�O‰O˜T×5Ñ5ð
ô ×Ñ˜t×9Ñ9ð
ô ×Ñ˜t×9Ñ9ð	
ô
 �N‰N˜D×3Ñ3ð
ô ×Ñ˜d×7Ñ7ð
ô �O‰O˜T×5Ñ5ð
ô ×Ñ˜d×7Ñ7ð
ô ×Ñ˜d×7Ñ7ð
ô ×Ñ ×!;Ñ!;ð
ô �N‰N˜D×3Ñ3ð
ô �O‰O˜T×5Ñ5ð
ô ×Ñ˜d×7Ñ7ð
ô �M‰M˜4×1Ñ1ð
ô �N‰N˜D×3Ñ3ð
ô  ×Ñ˜d×7Ñ7ð!
ô" �N‰N˜D×3Ñ3ð#
ô$ ×Ñ˜d×7Ñ7Ü�M‰M˜4×1Ñ1Ü×Ñ˜t×7Ñ7Ü�N‰N˜D×3Ñ3ñ+
ð, ñ-ˆð0 	�
‰
�GÐ%Ô&Ù˜G¨fÀuÓTÐTr   c                 óœ  • US4U;   a  UR                  SS5        gU(       ai  [        UR                  [        5      (       a  UR	                  5       nUR                  U" U5      R                  5       5        U R                  X4XVS-   5      $ UR                  5         U R                  UU[        UR                  5      -  XQS41-  US-   5      $ ©NTÚCLOSEDé   F)r?   Ú
isinstanceÚtermr   Únegater'   Úsimplifyr*   Úmark_alls_freshr+   Úargs©r3   rn   ro   r8   rk   rl   rm   s          r    rB   Ú!TableauProver._attempt_proof_atomg   s½   € ð �Tˆ?˜eÓ#Ø�J‰J�x Ô#ØæÜ˜'Ÿ,™,Ô(9×:Ñ:Ø!Ÿ.™.Ó*�Ø�J‰J‘w˜wÓ'×0Ñ0Ó2Ô3Ø×&Ñ& vÀÈqÁyÓQÐQð ×"Ñ"Ô$Ø×&Ñ&ØØ¤# g§l¡lÓ"3Ñ3Ø 5Ð)Ð*Ñ*Ø˜‘	ó	ð r   c                 óØ  • UR                   S4U;   a  UR                  SS5        gU(       ai  [        UR                   [        5      (       a  UR	                  5       nUR                  U" U5      R                  5       5        U R                  X4XVS-   5      $ UR                  5         U R                  UU[        UR                   R                  5      -  XQR                   S41-  US-   5      $ ©NFru   rv   T)rx   r?   rw   r   ry   r'   rz   r*   r{   r+   r|   r}   s          r    rF   Ú#TableauProver._attempt_proof_n_atom~   sÌ   € ð �L‰L˜%Ð  EÓ)Ø�J‰J�x Ô#ØæÜ˜'Ÿ,™,Ô(9×:Ñ:Ø!Ÿ.™.Ó*�Ø�J‰J‘w˜wÓ'×0Ñ0Ó2Ô3Ø×&Ñ& vÀÈqÁyÓQÐQð ×"Ñ"Ô$Ø×&Ñ&ØØ¤# g§l¡l×&7Ñ&7Ó"8Ñ8ØŸ,™,¨Ð-Ð.Ñ.Ø˜‘	ó	ð r   c                 óŽ   • US4U;   a  UR                  SS5        gUR                  5         U R                  X4XQS41-  US-   5      $ rt   )r?   r{   r*   r}   s          r    rD   Ú!TableauProver._attempt_proof_prop•   sX   € ð �Tˆ?˜eÓ#Ø�J‰J�x Ô#Øð 	×ÑÔ Ø×"Ñ"Ø U¸Ð.>Ð-?Ñ%?ÀÈÁó
ð 	
r   c                 ó¶   • UR                   S4U;   a  UR                  SS5        gUR                  5         U R                  X4XQR                   S41-  US-   5      $ r€   )rx   r?   r{   r*   r}   s          r    rH   Ú#TableauProver._attempt_proof_n_prop£   sa   € ð �L‰L˜%Ð  EÓ)Ø�J‰J�x Ô#Øð 	×ÑÔ Ø×"Ñ"Ø U¯|©|¸TÐ.BÐ-CÑ%CÀUÈQÁYó
ð 	
r   c                 óà  • UR                  5       u  px[        U5       HÃ  u  pš[        R                  U
5      (       a  M!  Un[	        S[
        R                  5       -  5      n[        U5       H#  u  pÞX�:X  a  U" [        U5      5      OU" U5      nM%     U(       a  U" U5      R                  5       n[        XË5      nUR                  X«5        U R                  X4XVS-   5      s  $    [        S5      e©NzX%srv   z=If this method is called, there must be a non-atomic argument)ÚuncurryÚ	enumerater"   Úis_atomr   Ú_counterÚgetr   rz   r   r'   r*   Ú	Exception©r3   rn   ro   r8   rk   rl   rm   Úfr|   ÚiÚargÚctxÚnvÚjÚas                  r    rJ   Ú TableauProver._attempt_proof_app±   sÈ   € ð —/‘/Ó#‰ˆÜ –o‰FˆAÜ ×(Ñ(¨×-Ó-Ø�Ü˜e¤h§l¡l£nÑ4Ó5�Ü% džO‘D�AØ9:»™#Ô0°Ó4Ô5ÁSÈÃV’Cñ ,æÙ! #›,×/Ñ/Ó1�CÜ& rÓ/�Ø—
‘
˜3Ô$Ø×*Ñ*¨6ÀEÐSTÉ9ÓUÒUñ &ô ÐWÓXÐXr   c                 óú  • UR                   R                  5       u  px[        U5       HÆ  u  pš[        R	                  U
5      (       a  M!  Un[        S[        R                  5       -  5      n[        U5       H#  u  pÞX�:X  a  U" [        U5      5      OU" U5      nM%     U(       a  U" U5      R                  5       n[        XË* 5      nUR                  U
* U5        U R                  X4XVS-   5      s  $    [        S5      er‡   )rx   rˆ   r‰   r"   rŠ   r   r‹   rŒ   r   rz   r   r'   r*   r�   rŽ   s                  r    rL   Ú"TableauProver._attempt_proof_n_appÂ   sÔ   € ð —,‘,×&Ñ&Ó(‰ˆÜ –o‰FˆAÜ ×(Ñ(¨×-Ó-Ø�Ü˜e¤h§l¡l£nÑ4Ó5�Ü% džO‘D�AØ9:»™#Ô0°Ó4Ô5ÁSÈÃV’Cñ ,æá! #›,×/Ñ/Ó1�CÜ& r¨4Ó0�Ø—
‘
˜C˜4 Ô%Ø×*Ñ*¨6ÀEÐSTÉ9ÓUÒUñ &ô ÐWÓXÐXr   c                 ó^  • UR                   R                  UR                   R                  :X  a  UR                  SS5        gU[        R
                     R                  X45        SUl        U R                  UXAR                   R                  UR                   R                  1-  UUS-   5      $ )Nru   rv   T)	rx   ÚfirstÚsecondr?   r@   rM   ÚaddÚ
_exhaustedr*   r}   s          r    rN   Ú!TableauProver._attempt_proof_n_eqÔ   s’   € ð �<‰<×Ñ §¡×!4Ñ!4Ó4Ø�J‰J�x Ô#ØàŒz�‰Ñ×#Ñ# WÐ$6Ô7Ø!ˆÔØ×"Ñ"ØØŸ|™|×1Ñ1°7·<±<×3FÑ3FÐGÑGØØ�A‰Ió	
ð 	
r   c                 óx   • UR                  UR                  R                  U5        U R                  X4XVS-   5      $ ©Nrv   )r'   rx   r*   r}   s          r    rP   Ú"TableauProver._attempt_proof_d_negç   s3   € ð 	�
‰
�7—<‘<×$Ñ$ gÔ.Ø×"Ñ" 6¸EÈ1Á9ÓMÐMr   c                 óÚ   • U[         R                     R                  [        UR                  R
                  UR                  R                  * 5      U45        U R                  X4XVS-   5      $ r    )r@   rg   rœ   r   rx   Úvariabler*   r}   s          r    rR   Ú"TableauProver._attempt_proof_n_allí   s\   € ð 	Œz× Ñ Ñ!×%Ñ%Ü˜gŸl™l×3Ñ3°g·l±l×6GÑ6GÐ5GÓHÈ'ÐRô	
ð ×"Ñ" 6¸EÈ1Á9ÓMÐMr   c                 óÚ   • U[         R                     R                  [        UR                  R
                  UR                  R                  * 5      U45        U R                  X4XVS-   5      $ r    )r@   ri   rœ   r   rx   r£   r*   r}   s          r    rT   Ú#TableauProver._attempt_proof_n_someõ   sZ   € ð 	Œz�~‰~Ñ×"Ñ"Ü˜7Ÿ<™<×0Ñ0°7·<±<×3DÑ3DÐ2DÓEÀwÐOô	
ð ×"Ñ" 6¸EÈ1Á9ÓMÐMr   c                 óœ   • UR                  UR                  U5        UR                  UR                  U5        U R                  X4XVS-   5      $ r    )r'   rš   r›   r*   r}   s          r    rV   Ú TableauProver._attempt_proof_andý   s?   € ð 	�
‰
�7—=‘= 'Ô*Ø�
‰
�7—>‘> 7Ô+Ø×"Ñ" 6¸EÈ1Á9ÓMÐMr   c                 óÈ   • UR                  UR                  R                  * U5        UR                  UR                  R                  * U5        U R	                  X4XVS-   5      $ r    ©r'   rx   rš   r›   r*   r}   s          r    rX   Ú!TableauProver._attempt_proof_n_or  sQ   € ð 	�
‰
�G—L‘L×&Ñ&Ð&¨Ô0Ø�
‰
�G—L‘L×'Ñ'Ð'¨Ô1Ø×"Ñ" 6¸EÈ1Á9ÓMÐMr   c                 óÆ   • UR                  UR                  R                  U5        UR                  UR                  R                  * U5        U R	                  X4XVS-   5      $ r    rª   r}   s          r    rZ   Ú"TableauProver._attempt_proof_n_imp  sN   € ð 	�
‰
�7—<‘<×%Ñ% wÔ/Ø�
‰
�G—L‘L×'Ñ'Ð'¨Ô1Ø×"Ñ" 6¸EÈ1Á9ÓMÐMr   c                 óô   • UR                  5       nUR                  UR                  U5        UR                  UR                  U5        U R	                  X4XVS-   5      =(       a    U R	                  XtXVS-   5      $ r    ©Úcloner'   rš   r›   r*   ©r3   rn   ro   r8   rk   rl   rm   Ú
new_agendas           r    r\   ÚTableauProver._attempt_proof_or  sj   € ð —\‘\“^ˆ
Ø�
‰
�7—=‘= 'Ô*Ø�‰�w—~‘~ wÔ/Ø×"Ñ"Ø U°A©Ió
÷ Qà×!Ñ! *¸uÈaÁiÓPð	Qr   c                 óö   • UR                  5       nUR                  UR                  * U5        UR                  UR                  U5        U R	                  X4XVS-   5      =(       a    U R	                  XtXVS-   5      $ r    r¯   r±   s           r    r^   Ú TableauProver._attempt_proof_imp  sl   € ð —\‘\“^ˆ
Ø�
‰
�G—M‘M�> 7Ô+Ø�‰�w—~‘~ wÔ/Ø×"Ñ"Ø U°A©Ió
÷ Qà×!Ñ! *¸uÈaÁiÓPð	Qr   c                 ó   • UR                  5       nUR                  UR                  R                  * U5        UR                  UR                  R                  * U5        U R                  X4XVS-   5      =(       a    U R                  XtXVS-   5      $ r    ©r°   r'   rx   rš   r›   r*   r±   s           r    r`   Ú"TableauProver._attempt_proof_n_and&  s|   € ð —\‘\“^ˆ
Ø�
‰
�G—L‘L×&Ñ&Ð&¨Ô0Ø�‰˜Ÿ™×+Ñ+Ð+¨WÔ5Ø×"Ñ"Ø U°A©Ió
÷ Qà×!Ñ! *¸uÈaÁiÓPð	Qr   c                 óh  • UR                  5       nUR                  UR                  U5        UR                  UR                  U5        UR                  UR                  * U5        UR                  UR                  * U5        U R	                  X4XVS-   5      =(       a    U R	                  XtXVS-   5      $ r    r¯   r±   s           r    rb   Ú TableauProver._attempt_proof_iff0  s’   € ð —\‘\“^ˆ
Ø�
‰
�7—=‘= 'Ô*Ø�
‰
�7—>‘> 7Ô+Ø�‰˜Ÿ™�~ wÔ/Ø�‰˜Ÿ™�¨Ô0Ø×"Ñ"Ø U°A©Ió
÷ Qà×!Ñ! *¸uÈaÁiÓPð	Qr   c                 ó¸  • UR                  5       nUR                  UR                  R                  U5        UR                  UR                  R                  * U5        UR                  UR                  R                  * U5        UR                  UR                  R                  U5        U R                  X4XVS-   5      =(       a    U R                  XtXVS-   5      $ r    r·   r±   s           r    rd   Ú"TableauProver._attempt_proof_n_iff<  s¬   € ð —\‘\“^ˆ
Ø�
‰
�7—<‘<×%Ñ% wÔ/Ø�
‰
�G—L‘L×'Ñ'Ð'¨Ô1Ø�‰˜Ÿ™×*Ñ*Ð*¨GÔ4Ø�‰�w—|‘|×*Ñ*¨GÔ4Ø×"Ñ"Ø U°A©Ió
÷ Qà×!Ñ! *¸uÈaÁiÓPð	Qr   c                 ó  • UR                  U5        UR                  UR                  UR                  5        UR	                  UR                  5        UR                  5         U R                  X4[        5       US-   5      $ r    )Ú	put_atomsÚreplace_allrš   r›   ÚdiscardÚmark_neqs_freshr*   r+   r}   s          r    rf   ÚTableauProver._attempt_proof_eqH  sc   € ð 	×Ñ˜ÔØ×Ñ˜7Ÿ=™=¨'¯.©.Ô9Ø×Ñ §¡Ô.Ø×ÑÔ Ø×"Ñ" 6¼C»EÀ5È1Á9ÓMÐMr   c                 óæ   • [        [        5       5      nUR                  UR                  R	                  UR
                  U5      U5        UR                  5         U R                  X4U1-  XVS-   5      $ r    )r   r   r'   rx   Úreplacer£   r{   r*   )r3   rn   ro   r8   rk   rl   rm   Únew_unique_variables           r    rh   Ú!TableauProver._attempt_proof_someU  sj   € ô 1´Ó1BÓCÐØ�
‰
�7—<‘<×'Ñ'¨×(8Ñ(8Ð:MÓNÐPWÔXØ×ÑÔ Ø×"Ñ"ØÐ':Ð&;Ñ;¸UÈAÁIó
ð 	
r   c                 ó  •  UR                     U(       Ga  XAR                   -
  nU(       a§  [        U5      S   nUR	                  SU-  S5        U=R                   U1-  sl         UR                  UR                  R                  UR                  U5      U5        U[        R                     R                  X45        U R                  X4XVS-   5      $ UR	                  SS5        SUl        U[        R                     R                  X45        U R                  X4XVS-   5      $ [        [        5       5      n	UR	                  SU	-  S5        U=R                   U	1-  sl         UR                  UR                  R                  UR                  U	5      U5        U[        R                     R                  X45        UR!                  5         U R                  X4U	1-  XVS-   5      $ ! [         a    [        5       Ul          GNñf = f)Nr   z--> Using '%s'é   rv   z--> Variables ExhaustedT)Ú
_used_varsÚAttributeErrorr+   Úlistr?   r'   rx   rÄ   r£   r@   ri   rœ   r*   r�   r   r   r{   )
r3   rn   ro   r8   rk   rl   rm   Úbv_availableÚvariable_to_userÅ   s
             r    rj   Ú TableauProver._attempt_proof_all_  sÑ  € ð	'Ø×Ò÷
 à*×-?Ñ-?Ñ?ˆLæÜ"& |Ó"4°QÑ"7�Ø—
‘
Ð+¨oÑ=¸qÔAØ×"Ò" Ð&7Ñ7Õ"Ø—
‘
Ø—L‘L×(Ñ(¨×)9Ñ)9¸?ÓKÈWôð ”z—~‘~Ñ&×*Ñ*¨GÐ+=Ô>Ø×*Ñ*¨6ÀEÐSTÉ9ÓUÐUð —
‘
Ð4°aÔ8Ø%)�Ô"Ø”z—~‘~Ñ&×*Ñ*¨GÐ+=Ô>Ø×*Ñ*¨6ÀEÐSTÉ9ÓUÐUô #5´_Ó5FÓ"GÐØ�J‰JÐ'Ð*=Ñ=¸qÔAØ×ÒÐ#6Ð"7Ñ7ÕØ�J‰JØ—‘×$Ñ$ W×%5Ñ%5Ð7JÓKÈWôð ”:—>‘>Ñ"×&Ñ&¨Ð'9Ô:Ø×"Ñ"Ô$Ø×&Ñ&ØÐ+>Ð*?Ñ?ÀÐPQÉ	óð øôE ó 	'Ü!$£ˆG×ð	'ús   ‚G# Ç#H Ç?H c                 ó&  • [        U [        5      (       a  U R                  n [        U [        5      (       a0  U R                   H  n[
        R                  U5      (       a  M    g   g[        U [        5      (       d  [        U [        5      (       a  gg)NFT)	rw   r   rx   r	   r|   r"   rŠ   r   r   )r:   r‘   s     r    rŠ   ÚTableauProver.is_atomŠ  sv   € ä�aÔ*×+Ñ+Ø—‘ˆAä�aÔ.×/Ñ/Ø—v”v�Ü$×,Ñ,¨S×1Ó1Ù ñ ð Ü˜Ô5×6Ñ6¼*ØÔ÷;
ñ ;
ð àr   r   )NNF)r   r   r   r   r-   r;   r*   rB   rF   rD   rH   rJ   rL   rN   rP   rR   rT   rV   rX   rZ   r\   r^   r`   rb   rd   rf   rh   rj   ÚstaticmethodrŠ   r   r   r   r    r"   r"   )   sŸ   † Ø€Mô3ò0!UòFò.ò.
ò
òYò"Yò$
ò&NòNòNòNòNòNòQòQòQò
Qò
QòNò
ò)ðV ñó ór   r"   c                   ó   • \ rS rSrSS jrSrg)ÚTableauProverCommandiœ  Nc                 ó|   • Ub  [        U[        5      (       d   eO
[        5       n[        R                  " XX5        g)z¹
:param goal: Input expression to prove
:type goal: sem.Expression
:param assumptions: Input expressions to use as assumptions in
    the proof.
:type assumptions: list(sem.Expression)
N)rw   r"   r   Ú__init__)r3   r4   r5   Úprovers       r    rÕ   ÚTableauProverCommand.__init__�  s4   € ð ÑÜ˜f¤m×4Ñ4Ð4Ñ4ä"“_ˆFä×"Ò" 4°ÕCr   r   )NNN)r   r   r   r   rÕ   r   r   r   r    rÓ   rÓ   œ  s   † ÷Dr   rÓ   c                   ó`   • \ rS rSrS rS rS rSS jrS rS r	S	 r
S
 rS rS rS rS rSrg)r&   i­  c                 óD   • [        S [        S5       5       5      U l        g )Nc              3   ó6   #   • U  H  n[        5       v •  M     g 7f©N)r+   )Ú.0r�   s     r    Ú	<genexpr>Ú"Agenda.__init__.<locals>.<genexpr>¯  s   é € Ð3ª Aœ#Ÿ%˜%ªùs   ‚é   )ÚtupleÚrangeÚsets)r3   s    r    rÕ   ÚAgenda.__init__®  s   € ÜÑ3¬¨r¬Ó3Ó3ˆ�	r   c                 ó   • [        5       nU R                   Vs/ s H  o"R                  5       PM     nn[        5       nU[        R
                      HZ  u  pV[        UR                  UR                  5      n UR                   Vs1 s H  oˆiM     snUl	        UR                  US 45        M\     XC[        R
                  '   U[        R                      V	V
s1 s H  u  pš[        U	R                  5      U
4iM     sn
n	U[        R                  '   [        U5      Ul        U$ s  snf s  snf ! [         a    [        5       Ul	         N®f = fs  sn
n	f rÛ   )r&   râ   Úcopyr+   r@   ri   r   r£   rx   rÉ   rÊ   rœ   rM   r   rà   )r3   r²   ÚsÚset_listÚ
new_allExsÚallExÚ_Ú	new_allExÚusedÚn_eqr’   s              r    r°   ÚAgenda.clone±  s  € Ü“Xˆ
Ø&*§i¢iÓ0¢i —F‘F–H¡iˆÐ0ä“Uˆ
Ø ¤§¡Ô0‰HˆEÜ% e§n¡n°e·j±jÓAˆIð-Ø9>×9IÒ9IÓ'JÒ9I°ªÑ9IÑ'J�	Ô$ð �N‰N˜I tÐ,Ö-ñ 1ð $.”—‘Ñ ð  (¬
¯©Ò8ô%
â8‘�ô ˜tŸy™yÓ)¨3Ó/Ù8ò%
ˆ”—‘Ñ!ô
   ›/ˆ
ŒØÐùò% 1ùò (KøÜ!ó -Ü'*£u�	Ö$ð-üó
%
s/   ™D!Á7D+ÂD&ÂD+Ã#E
Ä&D+Ä+EÅEc                 ó    • U R                   U   $ rÛ   ©râ   )r3   Úindexs     r    Ú__getitem__ÚAgenda.__getitem__Ç  s   € Ø�y‰y˜ÑÐr   Nc                 ó\  • [        U[        5      (       aC  [        UR                  UR                  5      n UR                   Vs1 s H  oDiM     snUl        OUnU R                  U R                  U5         R                  X245        g s  snf ! [
         a    [        5       Ul         NOf = frÛ   )
rw   r   r£   rx   rÉ   rÊ   r+   râ   Ú_categorize_expressionrœ   )r3   Ú
expressionro   Ú	ex_to_addrì   s        r    r'   Ú
Agenda.putÊ  s”   € Ü�j¤-×0Ñ0Ü% j×&9Ñ&9¸:¿?¹?ÓKˆIð-Ø9C×9NÒ9NÓ'OÒ9N°ªÑ9NÑ'O�	Õ$ð #ˆIØ�	‰	�$×-Ñ-¨iÓ8Ñ9×=Ñ=¸yÐ>RÕSùò (PøÜ!ó -Ü'*£u�	Ö$ð-ús#   ·B ÁB
ÁB Â
B ÂB+Â*B+c                 ó8   • U H  nU R                  U5        M     g rÛ   )r'   )r3   Úexpressionsrö   s      r    r(   ÚAgenda.put_allÕ  s   € Û%ˆJØ�H‰H�ZÖ ò &r   c                 ó¾   • U HW  u  p#U(       a'  U [         R                     R                  U* S 45        M3  U [         R                     R                  US 45        MY     g rÛ   )r@   rE   rœ   rA   )r3   rl   ÚatomÚnegs       r    r¾   ÚAgenda.put_atomsÙ  sK   € Û‰IˆDÞØ”Z×&Ñ&Ñ'×+Ñ+¨d¨U°D¨MÖ:à”Z—_‘_Ñ%×)Ñ)¨4°¨,Ö7ò	 r   c                 ó~  • [        U R                  5       H|  u  pU(       d  M  U[        R                  [        R                  4;   a8  U H0  n US   R
                  (       d  UR                  U5        X14s  s  $ M2     Mj  UR                  5       U4s  $    g! [         a    UR                  U5        X14s s  s  $ f = f)z3Pop the first expression that appears in the agendar   ))NNN)	r‰   râ   r@   rM   ri   r�   ÚremoverÊ   Úpop)r3   r�   ræ   Úexs       r    r>   ÚAgenda.pop_firstà  sž   € ä˜dŸi™iÖ(‰DˆAßˆqØœŸ™¬*¯.©.Ð9Ó9Û˜ð+Ø#% a¡5×#3×#3Ø !§¡¨¤Ø(* w¤ñ $4ó  ð ŸE™E›G Q˜<Ò'ñ )ð $øô  .ó +ØŸH™H RœLØ$& 7žNð+ús   Á'BÂB<Â;B<c                 óº   • U R                    HK  nU HB  u  pEUR                  UR                  U5        Uc  M&  UR                  UR                  U5        MD     MM     g rÛ   )râ   rÄ   r£   )r3   ÚoldÚnewræ   r  r’   s         r    r¿   ÚAgenda.replace_allñ  sE   € Ø—”ˆAÛ‘�Ø—
‘
˜3Ÿ<™<¨Ô-Ø“?Ø—K‘K §¡¨cÖ2ó ò r   c                 ó^   • U R                   [        R                      H  u  pSUl        M     g ©NF)râ   r@   ri   r�   )r3   Úurê   s      r    r{   ÚAgenda.mark_alls_freshø  s"   € Ø—I‘IœjŸn™nÔ-‰DˆAØ ˆAŽLò .r   c                 ó^   • U R                   [        R                      H  u  pSUl        M     g r
  )râ   r@   rM   r�   )r3   Úneqrê   s      r    rÁ   ÚAgenda.mark_neqs_freshü  s"   € Ø—i‘i¤
§¡Ô0‰FˆCØ"ˆCŽNò 1r   c                 ó€  • [        U[        5      (       a  U R                  U5      $ [        U[        5      (       a  [        R
                  $ [        R                  U5      (       a  [        R                  $ [        U[        5      (       a  [        R                  $ [        U[        5      (       a  [        R                  $ [        U[        5      (       a  [        R                  $ [        U[        5      (       a  [        R                   $ [        U["        5      (       a  [        R$                  $ [        U[&        5      (       a  [        R(                  $ [        U[*        5      (       a  [        R,                  $ [        U[.        5      (       a  [        R0                  $ [3        SUR4                  R6                  -  5      e©Nzcannot categorize %s)rw   r   Ú_categorize_NegatedExpressionr   r@   rC   r"   rŠ   rA   r   ri   r   rU   r   r[   r   r]   r   ra   r
   re   r   rg   r	   rI   r   Ú	__class__r   )r3   rn   s     r    rõ   ÚAgenda._categorize_expression   s.  € Ü�gÔ0×1Ñ1Ø×5Ñ5°gÓ>Ð>Ü˜Ô!;×<Ñ<Ü—?‘?Ð"Ü×"Ñ" 7×+Ñ+Ü—?‘?Ð"Ü˜¤×/Ñ/Ü—>‘>Ð!Ü˜¤×/Ñ/Ü—>‘>Ð!Ü˜¤×.Ñ.Ü—=‘=Ð Ü˜¤×/Ñ/Ü—>‘>Ð!Ü˜¤×/Ñ/Ü—>‘>Ð!Ü˜Ô!3×4Ñ4Ü—=‘=Ð Ü˜Ô!1×2Ñ2Ü×$Ñ$Ð$Ü˜Ô!6×7Ñ7Ü—>‘>Ð!ä"Ð#9¸G×<MÑ<M×<VÑ<VÑ#VÓWÐWr   c                 ó–  • UR                   n[        U[        5      (       a  [        R                  $ [        U[
        5      (       a  [        R                  $ [        R                  U5      (       a  [        R                  $ [        U[        5      (       a  [        R                  $ [        U[        5      (       a  [        R                  $ [        U[        5      (       a  [        R                  $ [        U[         5      (       a  [        R"                  $ [        U[$        5      (       a  [        R&                  $ [        U[(        5      (       a  [        R*                  $ [        U[,        5      (       a  [        R.                  $ [        U[0        5      (       a  [        R2                  $ [5        SUR6                  R8                  -  5      er  )rx   rw   r   r@   rO   r   rG   r"   rŠ   rE   r   rQ   r   r_   r   rW   r   rY   r   rc   r
   rM   r   rS   r	   rK   r   r  r   )r3   rn   Únegateds      r    r  Ú$Agenda._categorize_NegatedExpression  s@  € Ø—,‘,ˆä�gÔ0×1Ñ1Ü×#Ñ#Ð#Ü˜Ô!;×<Ñ<Ü×$Ñ$Ð$Ü×"Ñ" 7×+Ñ+Ü×$Ñ$Ð$Ü˜¤×/Ñ/Ü×#Ñ#Ð#Ü˜¤×/Ñ/Ü×#Ñ#Ð#Ü˜¤×.Ñ.Ü—?‘?Ð"Ü˜¤×/Ñ/Ü×#Ñ#Ð#Ü˜¤×/Ñ/Ü×#Ñ#Ð#Ü˜Ô!3×4Ñ4Ü—?‘?Ð"Ü˜Ô!1×2Ñ2Ü×&Ñ&Ð&Ü˜Ô!6×7Ñ7Ü×#Ñ#Ð#ä"Ð#9¸G×<MÑ<M×<VÑ<VÑ#VÓWÐWr   rð   rÛ   )r   r   r   r   rÕ   r°   rò   r'   r(   r¾   r>   r¿   r{   rÁ   rõ   r  r   r   r   r    r&   r&   ­  sA   † ò4òò, ô	Tò!ò8ò$ò"3ò!ò#òXõ4Xr   r&   c                   ó.   • \ rS rSrSS jrS rSS jrSrg)	r)   i7  Nc                 ó:   • Xl         X l        U(       d  / nX0l        g rÛ   )r6   Úindentr2   )r3   r6   r  r2   s       r    rÕ   ÚDebug.__init__8  s   € ØŒØŒæØˆEØ�
r   c                 ó^   • [        U R                  U R                  S-   U R                  5      $ r    )r)   r6   r  r2   )r3   Ú	increments     r    Ú__add__ÚDebug.__add__@  s!   € Ü�T—\‘\ 4§;¡;°¡?°D·J±JÓ?Ð?r   c                 óÂ  • [        U[        5      (       a[  Uu  p4U(       a  U SU 3nOSU-  n[        U[        5      (       a.   SSR                  S UR                   5       5      -  nUSU-  -  nSR                  S	U R                  U-   -  U5      nU R                  R                  U5        U R                  (       a  [        U5        g g ! [
         a    US-  n Nlf = f)
Nú, ú%sz[%s]Ú,c              3   óT   #   • U  H  nS UR                   R                  -  v •  M      g7f)r"  N)r£   Úname)rÜ   Úves     r    rÝ   ÚDebug.line.<locals>.<genexpr>N  s   é € Ð QÂ=¸R ¨¯©×(8Ñ(8Ö!8Â=ùs   ‚&(z:   %sz:   []z{}{}z   )rw   rà   r   r1   rÉ   rÊ   Úformatr  r2   Úappendr6   r0   )r3   Údatar  r  r’   Ú	used_varsÚnewlines          r    r?   Ú
Debug.lineC  sÔ   € Ü�dœE×"Ñ"Ø‰GˆBÞØ˜˜R ˜u�~‘à˜b‘y�ä˜"œm×,Ñ,ð%Ø &ØŸ™Ñ QÀ2Ç=Â=Ó QÓQñ!�Ið ˜H yÑ0Ñ0�Dð —-‘- ¨¯©°vÑ)=Ñ >ÀÓEˆØ�
‰
×Ñ˜'Ô"à�<�<Ü�'�Nð øô &ó %Ø˜HÑ$’Dð%ús   Á-C ÃCÃC)r  r2   r6   )r   N)r   )r   r   r   r   rÕ   r  r?   r   r   r   r    r)   r)   7  s   † ôò@÷r   r)   c                   óh   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrg)r@   i[  r   rv   rÈ   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   r   N)r   r   r   r   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rS   rU   rW   rY   r[   r]   r_   ra   rc   re   rg   ri   r   r   r   r    r@   r@   [  sk   † Ø€DØ€DØ€FØ€FØ
€CØ€EØ€DØ€EØ€EØ€HØ
€CØ€DØ€EØ	€BØ
€CØ€EØ
€CØ€EØ	€BØ€FØ
ƒCr   r@   c                  óF  • [        S5        [        S5        [        SSS/5        [        S5        [        S5        [        S5        [        S	5        [        S
5        [        S5        [        S	5        [        S
5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        Sn SnSn[        X U/5        Sn SnSn[        X U/5        SnSn[        X#/5        SnSn[        X#/5        SnSn[        X#/5        Sn[        U5        g )NzP | -PzP & -PÚQÚPz(P -> Q)zman(x)z(man(x) -> man(x))z(man(x) -> --man(x))z-(man(x) and -man(x))z(man(x) or -man(x))z(man(x) iff man(x))z-(man(x) iff -man(x))zall x.man(x)z all x.all y.((x = y) -> (y = x))z2all x.all y.all z.(((x = y) & (y = z)) -> (x = z))zall x.(man(x) -> mortal(x))zman(Socrates)zmortal(Socrates)zall x.(man(x) -> walks(x))z	man(John)zsome y.walks(y)z((x = y) & walks(y))zwalks(x)z((x = y) & ((y = z) & (z = w)))z(x = w)z5some e1.some e2.(believe(e1,john,e2) & walk(e2,mary))zsome e0.walk(e0,mary)z(exists x.exists z3.((x = Mary) & ((z3 = John) & sees(z3,x))) <-> exists x.exists z4.((x = John) & ((z4 = Mary) & sees(x,z4))))©Útableau_test)Úp1Úp2ÚcÚps       r    ÚtestTableauProverrJ  s  s   € Ü�ÔÜ�ÔÜ��s˜JÐ'Ô(Ü�ÔÜÐ%Ô&ÜÐ'Ô(ÜÐ(Ô)ÜÐ&Ô'ÜÐ%Ô&ÜÐ(Ô)ÜÐ&Ô'ÜÐ%Ô&ÜÐ&Ô'ÜÐ(Ô)Ü�Ô ÜÐ3Ô4ÜÐEÔFð 
'€BØ	€BØ€AÜ�˜�HÔà	%€BØ	€BØ€AÜ�˜�HÔà€AØ€AÜ��CÔà)€AØ€AÜ��CÔà?€AØ€AÜ��CÔð 	J€AÜ�…Or   c                  óº   • [        SS/5        [        SS/5        [        SS/5        [        SS/5        [        SS	/5        [        S
S/5        [        SS/5        g )Nzbelieve(j, -lie(b))zbelieve(j, -lie(b) & -cheat(b))zbelieve(j, lie(b) & cheat(b))zbelieve(j, lie(b))zlie(b)zbelieve(j, know(b, cheat(b)))z;believe(j, know(b, lie(b)) & know(b, steals(b) & cheat(b)))zP(Q(y), R(y) & R(z))zP(Q(x) & Q(y), R(y) & R(z))zbelieve(j, cheat(b) & lie(b))zbelieve(j, -cheat(b) & -lie(b))rD  r   r   r    ÚtestHigherOrderTableauProverrL  §  sq   € ÜÐ&Ð)JÐ(KÔLÜÐ0Ð3GÐ2HÔIÜØ˜x˜jôô Ø'Ø	FÐGôô Ð'Ð*GÐ)HÔIäÐ0Ð3RÐ2SÔTÜÐ2Ð5VÐ4WÕXr   Nc                 ó"  • [         R                  " U 5      nU(       a'  U Vs/ s H  n[         R                  " U5      PM     snO/ nU(       d  / n[        SR                  U5      < SU< S[	        5       R                  X5US9< 35        g s  snf )Nr!  z |- z: )r6   )r   Ú
fromstringr0   r1   r"   Úprove)rH  Úpsr6   ÚpcrI  Úppss         r    rE  rE  ·  sq   € Ü	×	Ò	˜qÓ	!€BÞ46©RÓ
0ªR¨Œ:× Ò  Ö#©RÒ
0¸B€CÞØˆÜ	à�9‰9�RŽ=›"œm›o×3Ñ3°BÀWÐ3ÒMð	Oõùò 1s   ¢ Bc                  ó,   • [        5         [        5         g rÛ   )rJ  rL  r   r   r    ÚdemorT  Â  s   € ÜÔÜ Õ"r   Ú__main__r
  )$Ú__doc__Únltk.inference.apir   r   Únltk.internalsr   Únltk.sem.logicr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r‹   r�   r   r"   rÓ   r&   r)   r@   rJ  rL  rE  rT  r   r   r   r    Ú<module>rZ     s¬   ðñ÷ 9Ý "÷÷ ÷ ÷ ó ñ& ‹9€ô	�yô 	ôp�Fô pôfDÐ,ô D÷"GXñ GX÷T!ñ !÷Hñ ò0,òhYô ò#ð
 ˆzÓÙ…Fð r   