Ë
    çÍ:jd  ã                   ó,  — d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ  e«       Z G d„ de«      Z G d„ de«      Z G d	„ d
e«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Zd„ Zd„ Z dd„Z!d„ Z"e#dk(  r e"«        yy)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                   ó   — e Zd Zy)ÚProverParseErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úk/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/nltk/inference/tableau.pyr   r   %   s   „ Ør   r   c                   ó¬   — 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„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zy)ÚTableauProverFNc                 ó¤  — |sg }d }	 t        «       }|r|j                  | «       |j                  |«       t        |«      }| j	                  |t        «       t        «       |«      }|dj                  j                  «      fS # t        $ rC}| j                  rt        |«      j                  d«      rd}n|rt        |«       n|‚Y d }~Œdd }~ww xY w)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   Ú_provezTableauProver._prove,   s»   € ÙØˆKàˆð	Ü“XˆFÙØ—
‘
˜D˜5Ô!Ø�N‰N˜;Ô'Ü˜W“~ˆHØ×(Ñ(¨´³¼»¸xÓHˆFð ˜Ÿ	™	 (§.¡.Ó1Ð2Ð2øô ò 		Ø×!Ò!¤c¨!£f×&7Ñ&7Ø2ô'ð ‘áÜ˜!•Hà�Gÿøð		ús   ˆAB Â	CÂ9C
Ã
Cc           	      ó
  — |j                  «       \  \  }}}|s|j                  d«       yi t        j                  | j                  “t        j
                  | j                  “t        j                  | j                  “t        j                  | j                  “t        j                  | j                  “t        j                  | j                  “t        j                  | j                   “t        j"                  | j$                  “t        j&                  | j(                  “t        j*                  | j,                  “t        j.                  | j0                  “t        j2                  | j4                  “t        j6                  | j8                  “t        j:                  | j<                  “t        j>                  | j@                  “t        jB                  | jD                  “t        jF                  | jH                  “t        jJ                  | jL                  t        jN                  | jP                  t        jR                  | jT                  t        jV                  | jX                  i¥|   }|j                  ||f«        |||||||«      S )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)	r/   r4   Úaccessible_varsÚatomsÚdebugÚcurrentÚcontextÚcategoryÚproof_methods	            r   r&   zTableauProver._attempt_proofD   s0  € Ø'-×'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˜WÐ%Ô&Ù˜G W¨f°oÀuÈeÓTÐTr   c                 óŠ  — |df|v r|j                  dd«       y|rft        |j                  t        «      r|j	                  «       }|j                   ||«      j                  «       «       | j                  ||||dz   «      S |j                  «        | j                  ||t        |j                  «      z  ||dfhz  |dz   «      S ©NTÚCLOSEDé   F)r:   Ú
isinstanceÚtermr   Únegater#   Úsimplifyr&   Úmark_alls_freshr'   Úargs©r/   ri   rj   r4   rf   rg   rh   s          r   r=   z!TableauProver._attempt_proof_atomg   sÀ   € ð �Tˆ?˜eÑ#Ø�J‰J�x Ô#ØáÜ˜'Ÿ,™,Ô(9Ô:Ø!Ÿ.™.Ó*�Ø�J‰J‘w˜wÓ'×0Ñ0Ó2Ô3Ø×&Ñ& v¨ÀÀuÈqÁyÓQÐQð ×"Ñ"Ô$Ø×&Ñ&ØØ¤# g§l¡lÓ"3Ñ3Ø˜' 5Ð)Ð*Ñ*Ø˜‘	ó	ð r   c                 óÆ  — |j                   df|v r|j                  dd«       y|rft        |j                   t        «      r|j	                  «       }|j                   ||«      j                  «       «       | j                  ||||dz   «      S |j                  «        | j                  ||t        |j                   j                  «      z  ||j                   dfhz  |dz   «      S ©NFro   rp   T)rr   r:   rq   r   rs   r#   rt   r&   ru   r'   rv   rw   s          r   rA   z#TableauProver._attempt_proof_n_atom~   sÏ   € ð �L‰L˜%Ð  EÑ)Ø�J‰J�x Ô#ØáÜ˜'Ÿ,™,Ô(9Ô:Ø!Ÿ.™.Ó*�Ø�J‰J‘w˜wÓ'×0Ñ0Ó2Ô3Ø×&Ñ& v¨ÀÀuÈqÁyÓQÐQð ×"Ñ"Ô$Ø×&Ñ&ØØ¤# g§l¡l×&7Ñ&7Ó"8Ñ8Ø˜'Ÿ,™,¨Ð-Ð.Ñ.Ø˜‘	ó	ð r   c                 óŽ   — |df|v r|j                  dd«       y|j                  «        | j                  ||||dfhz  |dz   «      S rn   )r:   ru   r&   rw   s          r   r?   z!TableauProver._attempt_proof_prop•   s\   € ð �Tˆ?˜eÑ#Ø�J‰J�x Ô#Øð 	×ÑÔ Ø×"Ñ"Ø�O U¨w¸Ð.>Ð-?Ñ%?ÀÈÁó
ð 	
r   c                 ó¶   — |j                   df|v r|j                  dd«       y|j                  «        | j                  ||||j                   dfhz  |dz   «      S ry   )rr   r:   ru   r&   rw   s          r   rC   z#TableauProver._attempt_proof_n_prop£   se   € ð �L‰L˜%Ð  EÑ)Ø�J‰J�x Ô#Øð 	×ÑÔ Ø×"Ñ"Ø�O U¨w¯|©|¸TÐ.BÐ-CÑ%CÀUÈQÁYó
ð 	
r   c                 óÒ  — |j                  «       \  }}t        |«      D ]¼  \  }	}
t        j                  |
«      rŒ|}t	        dt
        j                  «       z  «      }t        |«      D ]#  \  }}|	|k(  r |t        |«      «      n ||«      }Œ% |r ||«      j                  «       }t        ||«      }|j                  |
|«       | j                  ||||dz   «      c S  t        d«      ‚©NzX%srp   z=If this method is called, there must be a non-atomic argument)ÚuncurryÚ	enumerater   Úis_atomr   Ú_counterÚgetr   rt   r   r#   r&   Ú	Exception©r/   ri   rj   r4   rf   rg   rh   Úfrv   ÚiÚargÚctxÚnvÚjÚas                  r   rE   z TableauProver._attempt_proof_app±   sã   € ð —/‘/Ó#‰ˆˆ4Ü “oò 
	V‰FˆAˆsÜ ×(Ñ(¨Õ-Ø�Ü˜e¤h§l¡l£nÑ4Ó5�Ü% d›Oò L‘D�A�qØ9:¸aº™#Ô0°Ó4Ô5ÁSÈÃV‘CðLáÙ! #›,×/Ñ/Ó1�CÜ& r¨3Ó/�Ø—
‘
˜3 Ô$Ø×*Ñ*¨6°?ÀEÈ5ÐSTÉ9ÓUÒUð
	Vô ÐWÓXÐXr   c                 óê  — |j                   j                  «       \  }}t        |«      D ]¾  \  }	}
t        j	                  |
«      rŒ|}t        dt        j                  «       z  «      }t        |«      D ]#  \  }}|	|k(  r |t        |«      «      n ||«      }Œ% |r ||«      j                  «       }t        || «      }|j                  |
 |«       | j                  ||||dz   «      c S  t        d«      ‚r}   )rr   r~   r   r   r€   r   r�   r‚   r   rt   r   r#   r&   rƒ   r„   s                  r   rG   z"TableauProver._attempt_proof_n_appÂ   sí   € ð —,‘,×&Ñ&Ó(‰ˆˆ4Ü “oò 	V‰FˆAˆsÜ ×(Ñ(¨Õ-Ø�Ü˜e¤h§l¡l£nÑ4Ó5�Ü% d›Oò L‘D�A�qØ9:¸aº™#Ô0°Ó4Ô5ÁSÈÃV‘CðLáá! #›,×/Ñ/Ó1�CÜ& r¨C¨4Ó0�Ø—
‘
˜C˜4 Ô%Ø×*Ñ*¨6°?ÀEÈ5ÐSTÉ9ÓUÒUð	Vô ÐWÓXÐXr   c                 ó`  — |j                   j                  |j                   j                  k(  r|j                  dd«       y|t        j
                     j                  ||f«       d|_        | j                  |||j                   j                  |j                   j                  hz  ||dz   «      S )Nro   rp   T)	rr   ÚfirstÚsecondr:   r;   rH   ÚaddÚ
_exhaustedr&   rw   s          r   rI   z!TableauProver._attempt_proof_n_eqÔ   s–   € ð �<‰<×Ñ §¡×!4Ñ!4Ò4Ø�J‰J�x Ô#ØàŒz�‰Ñ×#Ñ# W¨gÐ$6Ô7Ø!ˆÔØ×"Ñ"ØØ˜wŸ|™|×1Ñ1°7·<±<×3FÑ3FÐGÑGØØ�A‰Ió	
ð 	
r   c                 ó|   — |j                  |j                  j                  |«       | j                  ||||dz   «      S ©Nrp   )r#   rr   r&   rw   s          r   rK   z"TableauProver._attempt_proof_d_negç   s7   € ð 	�
‰
�7—<‘<×$Ñ$ gÔ.Ø×"Ñ" 6¨?¸EÀ5È1Á9ÓMÐMr   c                 óÞ   — |t         j                     j                  t        |j                  j
                  |j                  j                   «      |f«       | j                  ||||dz   «      S r“   )r;   rb   r�   r   rr   Úvariabler&   rw   s          r   rM   z"TableauProver._attempt_proof_n_allí   s`   € ð 	Œz× Ñ Ñ!×%Ñ%Ü˜gŸl™l×3Ñ3°g·l±l×6GÑ6GÐ5GÓHÈ'ÐRô	
ð ×"Ñ" 6¨?¸EÀ5È1Á9ÓMÐMr   c                 óÞ   — |t         j                     j                  t        |j                  j
                  |j                  j                   «      |f«       | j                  ||||dz   «      S r“   )r;   rd   r�   r   rr   r•   r&   rw   s          r   rO   z#TableauProver._attempt_proof_n_someõ   s^   € ð 	Œz�~‰~Ñ×"Ñ"Ü˜7Ÿ<™<×0Ñ0°7·<±<×3DÑ3DÐ2DÓEÀwÐOô	
ð ×"Ñ" 6¨?¸EÀ5È1Á9ÓMÐMr   c                 ó    — |j                  |j                  |«       |j                  |j                  |«       | j                  ||||dz   «      S r“   )r#   rŽ   r�   r&   rw   s          r   rQ   z TableauProver._attempt_proof_andý   sC   € ð 	�
‰
�7—=‘= 'Ô*Ø�
‰
�7—>‘> 7Ô+Ø×"Ñ" 6¨?¸EÀ5È1Á9ÓMÐMr   c                 óÌ   — |j                  |j                  j                   |«       |j                  |j                  j                   |«       | j	                  ||||dz   «      S r“   ©r#   rr   rŽ   r�   r&   rw   s          r   rS   z!TableauProver._attempt_proof_n_or  sU   € ð 	�
‰
�G—L‘L×&Ñ&Ð&¨Ô0Ø�
‰
�G—L‘L×'Ñ'Ð'¨Ô1Ø×"Ñ" 6¨?¸EÀ5È1Á9ÓMÐMr   c                 óÊ   — |j                  |j                  j                  |«       |j                  |j                  j                   |«       | j	                  ||||dz   «      S r“   r™   rw   s          r   rU   z"TableauProver._attempt_proof_n_imp  sR   € ð 	�
‰
�7—<‘<×%Ñ% wÔ/Ø�
‰
�G—L‘L×'Ñ'Ð'¨Ô1Ø×"Ñ" 6¨?¸EÀ5È1Á9ÓMÐMr   c                 óò   — |j                  «       }|j                  |j                  |«       |j                  |j                  |«       | j	                  ||||dz   «      xr | j	                  ||||dz   «      S r“   ©Úcloner#   rŽ   r�   r&   ©r/   ri   rj   r4   rf   rg   rh   Ú
new_agendas           r   rW   zTableauProver._attempt_proof_or  sr   € ð —\‘\“^ˆ
Ø�
‰
�7—=‘= 'Ô*Ø�‰�w—~‘~ wÔ/Ø×"Ñ"Ø�O U¨E°A©Ió
ò Qà×!Ñ! *¨o¸uÀeÈaÁiÓPð	Qr   c                 óô   — |j                  «       }|j                  |j                   |«       |j                  |j                  |«       | j	                  ||||dz   «      xr | j	                  ||||dz   «      S r“   rœ   rž   s           r   rY   z TableauProver._attempt_proof_imp  st   € ð —\‘\“^ˆ
Ø�
‰
�G—M‘M�> 7Ô+Ø�‰�w—~‘~ wÔ/Ø×"Ñ"Ø�O U¨E°A©Ió
ò Qà×!Ñ! *¨o¸uÀeÈaÁiÓPð	Qr   c                 ó  — |j                  «       }|j                  |j                  j                   |«       |j                  |j                  j                   |«       | j                  ||||dz   «      xr | j                  ||||dz   «      S r“   ©r�   r#   rr   rŽ   r�   r&   rž   s           r   r[   z"TableauProver._attempt_proof_n_and&  s„   € ð —\‘\“^ˆ
Ø�
‰
�G—L‘L×&Ñ&Ð&¨Ô0Ø�‰˜Ÿ™×+Ñ+Ð+¨WÔ5Ø×"Ñ"Ø�O U¨E°A©Ió
ò Qà×!Ñ! *¨o¸uÀeÈaÁiÓPð	Qr   c                 óf  — |j                  «       }|j                  |j                  |«       |j                  |j                  |«       |j                  |j                   |«       |j                  |j                   |«       | j	                  ||||dz   «      xr | j	                  ||||dz   «      S r“   rœ   rž   s           r   r]   z TableauProver._attempt_proof_iff0  sš   € ð —\‘\“^ˆ
Ø�
‰
�7—=‘= 'Ô*Ø�
‰
�7—>‘> 7Ô+Ø�‰˜Ÿ™�~ wÔ/Ø�‰˜Ÿ™�¨Ô0Ø×"Ñ"Ø�O U¨E°A©Ió
ò Qà×!Ñ! *¨o¸uÀeÈaÁiÓPð	Qr   c                 ó¶  — |j                  «       }|j                  |j                  j                  |«       |j                  |j                  j                   |«       |j                  |j                  j                   |«       |j                  |j                  j                  |«       | j                  ||||dz   «      xr | j                  ||||dz   «      S r“   r¢   rž   s           r   r_   z"TableauProver._attempt_proof_n_iff<  s´   € ð —\‘\“^ˆ
Ø�
‰
�7—<‘<×%Ñ% wÔ/Ø�
‰
�G—L‘L×'Ñ'Ð'¨Ô1Ø�‰˜Ÿ™×*Ñ*Ð*¨GÔ4Ø�‰�w—|‘|×*Ñ*¨GÔ4Ø×"Ñ"Ø�O U¨E°A©Ió
ò Qà×!Ñ! *¨o¸uÀeÈaÁiÓPð	Qr   c                 ó  — |j                  |«       |j                  |j                  |j                  «       |j	                  |j                  «       |j                  «        | j                  ||t        «       |dz   «      S r“   )Ú	put_atomsÚreplace_allrŽ   r�   ÚdiscardÚmark_neqs_freshr&   r'   rw   s          r   ra   zTableauProver._attempt_proof_eqH  se   € ð 	×Ñ˜ÔØ×Ñ˜7Ÿ=™=¨'¯.©.Ô9Ø×Ñ §¡Ô.Ø×ÑÔ Ø×"Ñ" 6¨?¼C»EÀ5È1Á9ÓMÐMr   c                 óê   — t        t        «       «      }|j                  |j                  j	                  |j
                  |«      |«       |j                  «        | j                  |||hz  ||dz   «      S r“   )r   r   r#   rr   Úreplacer•   ru   r&   )r/   ri   rj   r4   rf   rg   rh   Únew_unique_variables           r   rc   z!TableauProver._attempt_proof_someU  sn   € ô 1´Ó1BÓCÐØ�
‰
�7—<‘<×'Ñ'¨×(8Ñ(8Ð:MÓNÐPWÔXØ×ÑÔ Ø×"Ñ"Ø�OÐ':Ð&;Ñ;¸UÀEÈAÁIó
ð 	
r   c                 ó  — 	 |j                    |�r||j                   z
  }|rªt        |«      d   }|j	                  d|z  d«       |xj                   |hz  c_         |j                  |j                  j                  |j                  |«      |«       |t        j                     j                  ||f«       | j                  ||||dz   «      S |j	                  dd«       d|_        |t        j                     j                  ||f«       | j                  ||||dz   «      S t        t        «       «      }	|j	                  d|	z  d«       |xj                   |	hz  c_         |j                  |j                  j                  |j                  |	«      |«       |t        j                     j                  ||f«       |j!                  «        | j                  |||	hz  ||dz   «      S # t        $ r t        «       |_         Y �Œðw xY w)Nr   z--> Using '%s'é   rp   z--> Variables ExhaustedT)Ú
_used_varsÚAttributeErrorr'   Úlistr:   r#   rr   r«   r•   r;   rd   r�   r&   r‘   r   r   ru   )
r/   ri   rj   r4   rf   rg   rh   Úbv_availableÚvariable_to_user¬   s
             r   re   z TableauProver._attempt_proof_all_  så  € ð	'Ø×Òò
 à*¨W×-?Ñ-?Ñ?ˆLáÜ"& |Ó"4°QÑ"7�Ø—
‘
Ð+¨oÑ=¸qÔAØ×"Ò" Ð&7Ñ7Õ"Ø—
‘
Ø—L‘L×(Ñ(¨×)9Ñ)9¸?ÓKÈWôð ”z—~‘~Ñ&×*Ñ*¨G°WÐ+=Ô>Ø×*Ñ*¨6°?ÀEÈ5ÐSTÉ9ÓUÐUð —
‘
Ð4°aÔ8Ø%)�Ô"Ø”z—~‘~Ñ&×*Ñ*¨G°WÐ+=Ô>Ø×*Ñ*¨6°?ÀEÈ5Ð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# Ç#G?Ç>G?c                 óð   — t        | t        «      r| j                  } t        | t        «      r)| j                  D ]  }t
        j                  |«      rŒ y yt        | t        «      st        | t        «      ryy)NFT)	rq   r   rr   r	   rv   r   r€   r   r   )r6   r‡   s     r   r€   zTableauProver.is_atomŠ  sj   € ä�aÔ*Ô+Ø—‘ˆAä�aÔ.Ô/Ø—v‘vò !�Ü$×,Ñ,¨SÕ1Ù ð!ð Ü˜Ô5Ô6¼*ØÔô;
ð àr   )NNF)r   r   r   r)   r7   r&   r=   rA   r?   rC   rE   rG   rI   rK   rM   rO   rQ   rS   rU   rW   rY   r[   r]   r_   ra   rc   re   Ústaticmethodr€   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                   ó   — e Zd Zdd„Zy)ÚTableauProverCommandNc                 óp   — |�t        |t        «      sJ ‚t        «       }t        j                  | |||«       y)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)rq   r   r   Ú__init__)r/   r0   r1   Úprovers       r   r¹   zTableauProverCommand.__init__�  s5   € ð ÐÜ˜f¤mÔ4Ð4Ð4ä"“_ˆFä×"Ñ" 4¨°°{ÕCr   )NNN)r   r   r   r¹   r   r   r   r·   r·   œ  s   „ ôDr   r·   c                   óV   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zy)r"   c                 óD   — t        d„ t        d«      D «       «      | _        y )Nc              3   ó0   K  — | ]  }t        «       –— Œ y ­w©N)r'   )Ú.0r†   s     r   ú	<genexpr>z"Agenda.__init__.<locals>.<genexpr>¯  s   è ø€ Ò3 Aœ#Ÿ%Ñ3ùs   ‚é   )ÚtupleÚrangeÚsets)r/   s    r   r¹   zAgenda.__init__®  s   € ÜÑ3¬¨r«Ô3Ó3ˆ�	r   c                 ó’  — t        «       }| j                  D �cg c]  }|j                  «       ‘Œ }}t        «       }|t        j
                     D ]X  \  }}t        |j                  |j                  «      }	 |j                  D �ch c]  }|’Œ c}|_	        |j                  |d f«       ŒZ ||t        j
                  <   |t        j                     D �	�
ch c]  \  }	}
t        |	j                  «      |
f’Œ c}
}	|t        j                  <   t        |«      |_        |S c c}w c c}w # t        $ r t        «       |_	        Y Œªw xY wc c}
}	w r¾   )r"   rÄ   Úcopyr'   r;   rd   r   r•   rr   r¯   r°   r�   rH   r   rÂ   )r/   rŸ   ÚsÚset_listÚ
new_allExsÚallExÚ_Ú	new_allExÚusedÚn_eqrˆ   s              r   r�   zAgenda.clone±  s  € Ü“Xˆ
Ø&*§i¡iÖ0 �A—F‘F•HÐ0ˆÐ0ä“Uˆ
Ø ¤§¡Ñ0ò 	.‰HˆE�1Ü% e§n¡n°e·j±jÓAˆIð-Ø9>×9IÑ9IÖ'J°ªÒ'J�	Ô$ð �N‰N˜I tÐ,Õ-ð	.ð $.ˆ”—‘Ñ ð  (¬
¯©Ñ8÷%
á��sô ˜tŸy™yÓ)¨3Ò/ó%
ˆ”—‘Ñ!ô
   ›/ˆ
ŒØÐùò% 1ùò (KøÜ!ò -Ü'*£u�	Ö$ð-üó
%
s/   ™DÁ6D%Â	D ÂD%Ã!EÄ D%Ä%E Ä?E c                 ó    — | j                   |   S r¾   )rÄ   )r/   Úindexs     r   Ú__getitem__zAgenda.__getitem__Ç  s   € Ø�y‰y˜ÑÐr   Nc                 óN  — t        |t        «      rAt        |j                  |j                  «      }	 |j                  D �ch c]  }|’Œ c}|_        n|}| j                  | j                  |«         j                  ||f«       y c c}w # t
        $ r t        «       |_        Y ŒOw xY wr¾   )
rq   r   r•   rr   r¯   r°   r'   rÄ   Ú_categorize_expressionr�   )r/   Ú
expressionrj   Ú	ex_to_addrÍ   s        r   r#   z
Agenda.putÊ  s�   € Ü�j¤-Ô0Ü% j×&9Ñ&9¸:¿?¹?ÓKˆIð-Ø9C×9NÑ9NÖ'O°ªÒ'O�	Õ$ð #ˆIØ�	‰	�$×-Ñ-¨iÓ8Ñ9×=Ñ=¸yÈ'Ð>RÕSùò (PøÜ!ò -Ü'*£u�	Ö$ð-ús#   ²B	 Á 	BÁ	B	 ÂB	 Â	B$Â#B$c                 ó4   — |D ]  }| j                  |«       Œ y r¾   )r#   )r/   ÚexpressionsrÔ   s      r   r$   zAgenda.put_allÕ  s   € Ø%ò 	!ˆJØ�H‰H�ZÕ ñ	!r   c                 ó°   — |D ]Q  \  }}|r&| t         j                     j                  | d f«       Œ.| t         j                     j                  |d f«       ŒS y r¾   )r;   r@   r�   r<   )r/   rg   ÚatomÚnegs       r   r¦   zAgenda.put_atomsÙ  sR   € Øò 	8‰IˆD�#ÙØ”Z×&Ñ&Ñ'×+Ñ+¨d¨U°D¨MÕ:à”Z—_‘_Ñ%×)Ñ)¨4°¨,Õ7ñ		8r   c                 ó`  — t        | j                  «      D ]n  \  }}|sŒ	|t        j                  t        j                  fv r1|D ]+  }	 |d   j
                  s|j                  |«       ||fc c S Œ- Œ\|j                  «       |fc S  y# t        $ r |j                  |«       ||fcY c c S w xY w)z3Pop the first expression that appears in the agendar   ))NNN)	r   rÄ   r;   rH   rd   r‘   Úremover°   Úpop)r/   r†   rÇ   Úexs       r   r9   zAgenda.pop_firstà  s¬   € ä˜dŸi™iÓ(ò 	(‰DˆAˆqÚØœŸ™¬*¯.©.Ð9Ñ9Øò +˜ð+Ø#% a¡5×#3Ò#3Ø !§¡¨¤Ø(*¨A w¤ð $4ñ+ð ŸE™E›G Q˜<Ò'ð	(ð $øô  .ò +ØŸH™H RœLØ$&¨ 7žNð+ús   Á#BÂB-Â,B-c                 ó°   — | j                   D ]G  }|D ]@  \  }}|j                  |j                  |«       |€Œ%|j                  |j                  |«       ŒB ŒI y r¾   )rÄ   r«   r•   )r/   ÚoldÚnewrÇ   rÞ   rˆ   s         r   r§   zAgenda.replace_allñ  sQ   € Ø—‘ò 	3ˆAØò 3‘��CØ—
‘
˜3Ÿ<™<¨Ô-Ø‘?Ø—K‘K §¡¨cÕ2ñ3ñ	3r   c                 ó\   — | j                   t        j                     D ]  \  }}d|_        Œ y ©NF)rÄ   r;   rd   r‘   )r/   ÚurË   s      r   ru   zAgenda.mark_alls_freshø  s)   € Ø—I‘IœjŸn™nÑ-ò 	!‰DˆAˆqØ ˆA�Lñ	!r   c                 ó\   — | j                   t        j                     D ]  \  }}d|_        Œ y rã   )rÄ   r;   rH   r‘   )r/   ÚneqrË   s      r   r©   zAgenda.mark_neqs_freshü  s)   € Ø—i‘i¤
§¡Ñ0ò 	#‰FˆC�Ø"ˆC�Nñ	#r   c                 ó  — t        |t        «      r| j                  |«      S t        |t        «      rt        j
                  S t        j                  |«      rt        j                  S t        |t        «      rt        j                  S t        |t        «      rt        j                  S t        |t        «      rt        j                  S t        |t        «      rt        j                   S t        |t"        «      rt        j$                  S t        |t&        «      rt        j(                  S t        |t*        «      rt        j,                  S t        |t.        «      rt        j0                  S t3        d|j4                  j6                  z  «      ‚©Nzcannot categorize %s)rq   r   Ú_categorize_NegatedExpressionr   r;   r>   r   r€   r<   r   rd   r   rP   r   rV   r   rX   r   r\   r
   r`   r   rb   r	   rD   r   Ú	__class__r   )r/   ri   s     r   rÓ   zAgenda._categorize_expression   s  € Ü�gÔ0Ô1Ø×5Ñ5°gÓ>Ð>Ü˜Ô!;Ô<Ü—?‘?Ð"Ü×"Ñ" 7Ô+Ü—?‘?Ð"Ü˜¤Ô/Ü—>‘>Ð!Ü˜¤Ô/Ü—>‘>Ð!Ü˜¤Ô.Ü—=‘=Ð Ü˜¤Ô/Ü—>‘>Ð!Ü˜¤Ô/Ü—>‘>Ð!Ü˜Ô!3Ô4Ü—=‘=Ð Ü˜Ô!1Ô2Ü×$Ñ$Ð$Ü˜Ô!6Ô7Ü—>‘>Ð!ä"Ð#9¸G×<MÑ<M×<VÑ<VÑ#VÓWÐWr   c                 ó(  — |j                   }t        |t        «      rt        j                  S t        |t
        «      rt        j                  S t        j                  |«      rt        j                  S t        |t        «      rt        j                  S t        |t        «      rt        j                  S t        |t        «      rt        j                  S t        |t         «      rt        j"                  S t        |t$        «      rt        j&                  S t        |t(        «      rt        j*                  S t        |t,        «      rt        j.                  S t        |t0        «      rt        j2                  S t5        d|j6                  j8                  z  «      ‚rè   )rr   rq   r   r;   rJ   r   rB   r   r€   r@   r   rL   r   rZ   r   rR   r   rT   r   r^   r
   rH   r   rN   r	   rF   r   rê   r   )r/   ri   Únegateds      r   ré   z$Agenda._categorize_NegatedExpression  s  € Ø—,‘,ˆä�gÔ0Ô1Ü×#Ñ#Ð#Ü˜Ô!;Ô<Ü×$Ñ$Ð$Ü×"Ñ" 7Ô+Ü×$Ñ$Ð$Ü˜¤Ô/Ü×#Ñ#Ð#Ü˜¤Ô/Ü×#Ñ#Ð#Ü˜¤Ô.Ü—?‘?Ð"Ü˜¤Ô/Ü×#Ñ#Ð#Ü˜¤Ô/Ü×#Ñ#Ð#Ü˜Ô!3Ô4Ü—?‘?Ð"Ü˜Ô!1Ô2Ü×&Ñ&Ð&Ü˜Ô!6Ô7Ü×#Ñ#Ð#ä"Ð#9¸G×<MÑ<M×<VÑ<VÑ#VÓWÐWr   r¾   )r   r   r   r¹   r�   rÑ   r#   r$   r¦   r9   r§   ru   r©   rÓ   ré   r   r   r   r"   r"   ­  sA   „ ò4òò, ó	Tò!ò8ò$ò"3ò!ò#òXó4Xr   r"   c                   ó"   — e Zd Zdd„Zd„ Zdd„Zy)r%   Nc                 ó6   — || _         || _        |sg }|| _        y r¾   )r2   Úindentr.   )r/   r2   rï   r.   s       r   r¹   zDebug.__init__8  s   € ØˆŒØˆŒáØˆEØˆ�
r   c                 ó^   — t        | j                  | j                  dz   | j                  «      S r“   )r%   r2   rï   r.   )r/   Ú	increments     r   Ú__add__zDebug.__add__@  s!   € Ü�T—\‘\ 4§;¡;°¡?°D·J±JÓ?Ð?r   c                 óš  — t        |t        «      rR|\  }}|r|› d|› �}nd|z  }t        |t        «      r.	 ddj                  d„ |j                  D «       «      z  }|d|z  z  }dj                  d	| j                  |z   z  |«      }| j                  j                  |«       | j                  rt        |«       y y # t
        $ r |dz  }Y Œfw xY w)
Nú, ú%sz[%s]ú,c              3   óN   K  — | ]  }d |j                   j                  z  –— Œ y­w)rõ   N)r•   Úname)r¿   Úves     r   rÀ   zDebug.line.<locals>.<genexpr>N  s   è ø€ Ò Q¸R ¨¯©×(8Ñ(8Õ!8Ñ Qùs   ‚#%z:   %sz:   []z{}{}z   )rq   rÂ   r   r-   r¯   r°   Úformatrï   r.   Úappendr2   r,   )r/   Údatarï   rÞ   rˆ   Ú	used_varsÚnewlines          r   r:   z
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   ¶-B9 Â9C
Ã	C
)r   N)r   )r   r   r   r¹   rò   r:   r   r   r   r%   r%   7  s   „ óò@ôr   r%   c                   ó`   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZy)r;   r   rp   r®   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   N)r   r   r   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rP   rR   rT   rV   rX   rZ   r\   r^   r`   rb   rd   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                  óP  — t        d«       t        d«       t        dddg«       t        d«       t        d«       t        d«       t        d	«       t        d
«       t        d«       t        d	«       t        d
«       t        d«       t        d«       t        d«       t        d«       t        d«       t        d«       d} d}d}t        || |g«       d} d}d}t        || |g«       d}d}t        ||g«       d}d}t        ||g«       d}d}t        ||g«       d}t        |«       y )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   ÚtestTableauProverr  s  s*  € Ü�ÔÜ�ÔÜ��s˜JÐ'Ô(Ü�ÔÜÐ%Ô&ÜÐ'Ô(ÜÐ(Ô)ÜÐ&Ô'ÜÐ%Ô&ÜÐ(Ô)ÜÐ&Ô'ÜÐ%Ô&ÜÐ&Ô'ÜÐ(Ô)Ü�Ô ÜÐ3Ô4ÜÐEÔFð 
'€BØ	€BØ€AÜ��R˜�HÔà	%€BØ	€BØ€AÜ��R˜�HÔà€AØ€AÜ��Q�CÔà)€AØ€AÜ��Q�CÔà?€AØ€AÜ��Q�CÔð 	J€AÜ�…Or   c                  óº   — t        ddg«       t        ddg«       t        ddg«       t        ddg«       t        dd	g«       t        d
dg«       t        ddg«       y )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))r  r   r   r   ÚtestHigherOrderTableauProverr  §  sq   € ÜÐ&Ð)JÐ(KÔLÜÐ0Ð3GÐ2HÔIÜØ˜x˜jôô Ø'Ø	FÐGôô Ð'Ð*GÐ)HÔIäÐ0Ð3RÐ2SÔTÜÐ2Ð5VÐ4WÕXr   Nc                 ó  — t        j                  | «      }|r#|D �cg c]  }t        j                  |«      ‘Œ c}ng }|sg }t        dj                  |«      ›d|›dt	        «       j                  |||¬«      ›�«       y c c}w )Nrô   z |- z: )r2   )r   Ú
fromstringr,   r-   r   Úprove)r  Úpsr2   Úpcr  Úppss         r   r  r  ·  so   € Ü	×	Ñ	˜qÓ	!€BÙ46¨RÖ
0¨Œ:× Ñ  Õ#Ó
0¸B€CÙØˆÜ	à�9‰9�R�=š"œm›o×3Ñ3°B¸ÀWÐ3ÔMð	Oõùò 1s   œA>c                  ó,   — t        «        t        «        y r¾   )r  r  r   r   r   Údemor%  Â  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;   r  r  r  r%  r   r   r   r   ú<module>r+     s¬   ðñ÷ 9Ý "÷÷ ÷ ÷ ó ñ& ‹9€ô	�yô 	ôp�Fô pôfDÐ,ô D÷"GXñ GX÷T!ñ !÷Hñ ò0,òhYó ò#ð
 ˆzÒÙ…Fð r   