Ë
    7^(hô>  ã                   ó†  — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZ dd	l m!Z! dd
l"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+ ddl,m-Z- d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d „ Z?d!„ Z@d"„ ZAd#„ ZBd$„ ZCd%„ ZDd&„ ZEd'„ ZFy())z1For more tests on satisfiability, see test_dimacsé    )ÚQ)Úsymbols)Ú
Unequality)ÚAndÚOrÚImpliesÚ
EquivalentÚtrueÚfalse)Úliteral_symbolÚpl_trueÚsatisfiableÚvalidÚentailsÚPropKB)ÚdpllÚdpll_satisfiableÚfind_pure_symbolÚfind_unit_clauseÚunit_propagateÚfind_pure_symbol_int_reprÚfind_unit_clause_int_reprÚunit_propagate_int_repr)r   )Úz3_satisfiable)ÚCNFÚ
EncodedCNF)Úmake_random_problem)Úrandint)ÚraisesÚskip)Úimport_modulec                  óš   — t        d«      \  } }t        d«      du sJ ‚t        d«      du sJ ‚t        | «      | u sJ ‚t        |  «      | u sJ ‚y )NzA,BTF)r   r   ©ÚAÚBs     ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/logic/tests/test_inference.pyÚtest_literalr'      s]   € Ü�5‹>�D€A€qÜ˜$Ó 4Ñ'Ð'Ð'Ü˜%Ó  EÑ)Ð)Ð)Ü˜!Ó Ñ!Ð!Ð!Ü˜1˜"Ó Ñ"Ð"Ñ"ó    c                  óª  — t        d«      \  } }}t        | g| g«      | dfk(  sJ ‚t        | |g|  |z  | | z  g«      dk(  sJ ‚t        | ||g| | z  | | z  || z  g«      | dfk(  sJ ‚t        | ||g|  |z  || z  || z  g«      |dfk(  sJ ‚t        | ||g|  | z  | | z  || z  g«      |dfk(  sJ ‚t        | ||g|  |z  | | z  || z  g«      dk(  sJ ‚y )NúA,B,CT©NNF)r   r   ©r$   r%   ÚCs      r&   Útest_find_pure_symbolr.       s?  € Ü�gÓ�G€A€qˆ!Ü˜Q˜C ! Ó%¨!¨T¨Ò2Ð2Ð2Ü˜Q ˜F a R¨!¡V¨a¨R°!©VÐ$4Ó5¸ÒEÐEÐEÜ˜Q  1˜I¨¨a¨R©°!°°q°b±¸!¸a¹%Ð'@ÓAÀaÈÀYÒNÐNÐNÜ˜Q  1˜I¨¨¨Q©°°Q°B±¸¸A¹Ð'>Ó?ÀAÀtÀ9ÒLÐLÐLÜ˜Q  1˜I¨¨¨a¨R©°!°°q°b±¸!¸a¹%Ð'@ÓAÀaÈÀZÒOÐOÐOÜØ	
ˆAˆqˆ	�Q�B˜‘F˜Q˜B ! ™G Q¨¡UÐ+ó-Ø0<ò=ð =ñ =r(   c                  ó>  — t        dgdhg«      dk(  sJ ‚t        ddgddhddhg«      dk(  sJ ‚t        g d¢ddhddhd	dhg«      dk(  sJ ‚t        g d¢ddhddhd	dhg«      d
k(  sJ ‚t        g d¢ddhddhd	dhg«      dk(  sJ ‚t        g d¢ddhddhd	dhg«      dk(  sJ ‚y )Né   ©r0   Té   éÿÿÿÿéþÿÿÿr+   ©r0   r2   é   éýÿÿÿr6   ©r2   T©r2   F)r   © r(   r&   Útest_find_pure_symbol_int_reprr;   +   s  € Ü$ a S¨A¨3¨%Ó0°IÒ=Ð=Ð=Ü$ a¨ VØ�a�˜2˜q˜'Ð"ó$Ø'3ò4ð 4ð 4ä$¢YØ�R�˜2˜r˜( Q¨ FÐ+ó-Ø09ò:ð :ð :ä$¢YØ�a�˜1˜b˜' A q 6Ð*ó,Ø/8ò9ð 9ð 9ä$¢YØ�b�˜B ˜8 a¨ VÐ,ó.Ø1;ò<ð <ð <ä$¢YØ�a�˜2˜r˜( Q¨ FÐ+ó-Ø0<ò=ð =ñ =r(   c                  ó°  — t        d«      \  } }}t        | gi «      | dfk(  sJ ‚t        | |  gi «      | dfk(  sJ ‚t        | |z  g| di«      |dfk(  sJ ‚t        | |z  g|di«      | dfk(  sJ ‚t        | |z  |z  || z  | | z  g| di«      |dfk(  sJ ‚t        | |z  |z  || z  | |z  g| di«      |dfk(  sJ ‚t        | |z  |z  || z  | gi «      | dfk(  sJ ‚y ©Nr*   TF)r   r   r,   s      r&   Útest_unit_clauser>   9   s8  € Ü�gÓ�G€A€qˆ!Ü˜Q˜C Ó$¨¨D¨	Ò1Ð1Ð1Ü˜Q  ˜G RÓ(¨Q°¨IÒ5Ð5Ð5Ü˜Q ™U˜G a¨ YÓ/°A°t°9Ò<Ð<Ð<Ü˜Q ™U˜G a¨ YÓ/°A°t°9Ò<Ð<Ð<ÜØ	
ˆQ‰�‰�A˜˜‘F˜A  ™FÐ# a¨ Yó0Ø45°u°:ò>ð >ð >ä˜Q ™U Q™Y¨¨Q¨B©°°A±Ð6¸¸D¸	ÓBÀqÈ$ÀiÒOÐOÐOÜ˜Q ™U Q™Y¨¨Q¨B©°Ð3°RÓ8¸QÀ¸IÒEÐEÑEr(   c            	      óê  — t        t        t        dgg«      i «      dk(  sJ ‚t        t        t        dgdgg«      i «      dk(  sJ ‚t        ddhgddi«      dk(  sJ ‚t        ddhgddi«      dk(  sJ ‚t        t        t        g d¢ddgdd	gg«      ddi«      d
k(  sJ ‚t        t        t        g d¢ddgddgg«      ddi«      dk(  sJ ‚t        d«      \  } }}t	        | |z  |z  || z  | gi «      | dfk(  sJ ‚y )Nr0   r1   r3   r2   Tr8   r5   r7   r4   r9   r6   r*   )r   ÚmapÚsetr   r   r,   s      r&   Útest_unit_clause_int_reprrB   E   s>  € Ü$¤S¬°¨s¨e£_°bÓ9¸YÒFÐFÐFÜ$¤S¬°¨s°R°D¨kÓ%:¸BÓ?À9ÒLÐLÐLÜ$ q¨! f X°°4¨yÓ9¸YÒFÐFÐFÜ$ q¨! f X°°4¨yÓ9¸YÒFÐFÐFÜ$¤S¬Ú	�Q˜�G˜a ˜WÐ%ó&'Ø)*¨D¨	ó3Ø6@òAð Að Aä$¤S¬Ú	�Q˜�G˜a ˜VÐ$ó&&Ø()¨4 yó2Ø5>ò?ð ?ð ?ô �gÓ�G€A€qˆ!Ü˜Q ™U Q™Y¨¨Q¨B©°Ð3°RÓ8¸QÀ¸IÒEÐEÑEr(   c                  óš   — t        d«      \  } }}t        | |z  g| «      g k(  sJ ‚t        | |z  |  |z  | |z  | g| «      || |z  | gk(  sJ ‚y )Nr*   )r   r   r,   s      r&   Útest_unit_propagaterD   S   sg   € Ü�gÓ�G€A€qˆ!Ü˜1˜q™5˜' 1Ó%¨Ò+Ð+Ð+Ü˜1˜q™5 1 " q¡&¨1¨"¨q©&°!Ð4°aÓ8¸QÀÀÀQÁÈ¸NÒJÐJÑJr(   c            	      óŠ   — t        ddhgd«      g k(  sJ ‚t        t        t        ddgddgddgdgg«      d«      dhddhgk(  sJ ‚y )Nr0   r2   r3   r6   r7   )r   r@   rA   r:   r(   r&   Útest_unit_propagate_int_reprrF   Y   sg   € Ü" Q¨ F 8¨QÓ/°2Ò5Ð5Ð5Ü"¤3¤sØ
ˆQˆ�"�a�˜2˜q˜' A 3Ð'ó$)Ø*+ó-Ø23°°r¸1°g°ò?ð ?ñ ?r(   c                  ób   — t        d«      \  } }}t        | |z  g| |g| d|di«      | d|dik(  sJ ‚y)z"This is also tested in test_dimacsr*   TN)r   r   r,   s      r&   Ú	test_dpllrH   _   sE   € ä�gÓ�G€A€qˆ!Ü��Q‘�˜!˜Q˜ ! T¨1¨dÐ!3Ó4¸¸DÀ!ÀTÐ8JÒJÐJÑJr(   c                  ó>  — t        d«      \  } }}t        | |  z  «      du sJ ‚t        | | z  «      | d|dik(  sJ ‚t        | |z  «      | di|di| d|difv sJ ‚t        |  |z  | | z  z  «      | d|di| d|difv sJ ‚t        | |z  | |z  z  «      | d|di| d|di|d|difv sJ ‚t        | |z  |z  «      | d|d|dik(  sJ ‚t        | |z  | |z	  z  «      |dik(  sJ ‚t        t        | |«      | z  «      | d|dik(  sJ ‚t        t        | |«      |  z  «      | d|dik(  sJ ‚y ©Nr*   FT)r   r   r	   r,   s      r&   Útest_dpll_satisfiablerK   e   s¹  € Ü�gÓ�G€A€qˆ!Ü˜Q ! ™VÓ%¨Ñ.Ð.Ð.Ü˜Q ! ™VÓ%¨!¨T°1°eÐ)<Ò<Ð<Ð<ÜØ	ˆA‰óØ˜�I  4˜y¨1¨d°A°tÐ*<Ð=ñ>ð >ð >äØ
ˆˆa‰�Q�B˜‘FÑóØ#$ d¨A¨tÐ"4°q¸%ÀÀEÐ6JÐ!KñLð Lð Lä˜a !™e¨¨¨Q©Ñ/Ó1°q¸$ÀÀ5Ð6IØ��a˜Ð  D¨!¨TÐ 2ð64ñ 4ð 4ð 4ä˜Q ™U Q™YÓ)¨a°°q¸$ÀÀ4Ð-HÒHÐHÐHÜ˜a !™e¨¨Q©Ñ/Ó1°a¸°YÒ>Ð>Ð>ÜœZ¨¨1Ó-°Ñ1Ó3¸¸4ÀÀDÐ7IÒIÐIÐIÜœZ¨¨1Ó-°°Ñ2Ó4¸¸EÀ1ÀeÐ8LÒLÐLÑLr(   c                  óJ  — t        d«      \  } }}t        | |  z  «      du sJ ‚t        | | z  «      | d|dik(  sJ ‚t        | |z  «      | di|di| d|difv sJ ‚t        |  |z  | | z  z  «      | d|di| d|difv sJ ‚t        | |z  | |z  z  «      | d|d|di| d|d|difv sJ ‚t        | |z  |z  «      | d|d|dik(  sJ ‚t        | |z  | |z	  z  «      |d| di|d| difv sJ ‚t        t        | |«      | z  «      | d|dik(  sJ ‚t        t        | |«      |  z  «      | d|dik(  sJ ‚y rJ   )r   Údpll2_satisfiabler	   r,   s      r&   Útest_dpll2_satisfiablerN   u   sÒ  € Ü�gÓ�G€A€qˆ!Ü˜a 1 "™fÓ&¨%Ñ/Ð/Ð/Ü˜a 1 "™fÓ&¨1¨d°A°uÐ*=Ò=Ð=Ð=ÜØ	ˆA‰óØ˜�I  4˜y¨1¨d°A°tÐ*<Ð=ñ>ð >ð >äØ
ˆˆa‰�Q�B˜‘FÑóØ#$ d¨A¨tÐ"4°q¸%ÀÀEÐ6JÐ!KñLð Lð Lä˜q 1™u¨!¨¨a©Ñ0Ó2¸¸4ÀÀEÈ1ÈdÐ7SØ	
ˆD�!�T˜1˜dÐ#ð7%ñ %ð %ð %ä˜a !™e a™iÓ*¨q°$¸¸4ÀÀDÐ.IÒIÐIÐIÜ˜q 1™u¨¨a©Ñ0Ó2¸¸4ÀÀEÐ7JØ	
ˆD�!�TÐð7ñ ð ð äœj¨¨AÓ.°Ñ2Ó4¸¸DÀ!ÀTÐ8JÒJÐJÐJÜœj¨¨AÓ.°!°Ñ3Ó5¸!¸UÀAÀuÐ9MÒMÐMÑMr(   c            
      óJ  — t        d«      \  } }}d„ } || |  z  «      du sJ ‚ || | z  «      | d|dik(  sJ ‚ || |z  «      | di|di| d|di| d|di| d|difv sJ ‚ ||  |z  | | z  z  «      | d|di| d|difv sJ ‚ || |z  | |z  z  «      | d|d|di| d|d|di| d|d|di| d|d|difv sJ ‚ || |z  |z  «      | d|d|dik(  sJ ‚ || |z  | |z	  z  «      |d| di|d| difv sJ ‚ |t        | |«      | z  «      | d|dik(  sJ ‚ |t        | |«      |  z  «      | d|dik(  sJ ‚y )Nr*   c                 ó   — t        | d¬«      S )NÚ	minisat22©Ú	algorithm©r   )Úexprs    r&   ú<lambda>z,test_minisat22_satisfiable.<locals>.<lambda>ˆ   s   € ¬°TÀ[Ô)Q€ r(   FT)r   r	   )r$   r%   r-   Úminisat22_satisfiables       r&   Útest_minisat22_satisfiablerX   †   s  € Ü�gÓ�G€A€qˆ!ÙQÐÙ  ! q b¡&Ó*¨eÑ3Ð3Ð3Ù  ! q b¡&Ó*¨q°$¸¸5Ð.AÒAÐAÐAÙ Ø	ˆA‰óØ˜�I  5˜z¨A¨u°a¸Ð+>ÀÀDÈ!ÈTÐ@RÐUVÐX\Ð^_ÐafÐTgÐhñið ið iá Ø
ˆˆa‰�Q�B˜‘FÑóØ#$ d¨A¨tÐ"4°q¸%ÀÀEÐ6JÐ!KñLð Lð Lá  1 q¡5¨a¨R°!©VÑ"4Ó6¸A¸tÀQÈÈqÐRVÐ;WØ	
ˆD�!�T˜1˜dÐ# a¨°°4¸¸DÐ%AÀAÀtÈQÐPUÐWXÐZ_ÐC`ð;bñ bð bð bá  ! a¡%¨!¡)Ó.°1°d¸A¸tÀQÈÐ2MÒMÐMÐMÙ  1 q¡5¨Q°!©VÑ"4Ó6¸A¸tÀQÈÐ;NØ	
ˆD�!�TÐð;ñ ð ð á ¤*¨Q°Ó"2°QÑ"6Ó8¸QÀÀaÈÐ<NÒNÐNÐNÙ ¤*¨Q°Ó"2°a°RÑ"7Ó9¸aÀÈÈ5Ð=QÒQÐQÑQr(   c            
      óä  — t        d«      \  } }}dd„} || |  z  «      du sJ ‚ || | z  «      | d|dik(  sJ ‚ || |z  «      | di|di| d|di| d|di| d|difv sJ ‚ ||  |z  | | z  z  «      | d|di| d|difv sJ ‚ || |z  | |z  z  «      | d|d|di| d|d|di| d|d|di| d|d|difv sJ ‚ || |z  |z  «      | d|d|dik(  sJ ‚ || |z  | |z	  z  «      |d| di|d| difv sJ ‚ |t        | |«      | z  «      | d|dik(  sJ ‚ |t        | |«      |  z  «      | d|dik(  sJ ‚t        | |z  |z  ddd¬«      }t        |«      }|j	                  «       D ��ch c]
  \  }}|sŒ	|’Œ }}}t        |«      }|j	                  «       D ��ch c]
  \  }}|sŒ	|’Œ }	}}t        |«      }|j	                  «       D ��ch c]
  \  }}|sŒ	|’Œ }
}}||	k  rJ ‚|	|
k  rJ ‚||
k  rJ ‚y c c}}w c c}}w c c}}w )Nr*   Tc                 ó   — t        | dd¬«      S )NrQ   T)rS   ÚminimalrT   )rU   r[   s     r&   rV   z4test_minisat22_minimal_satisfiable.<locals>.<lambda>™   s   € ´{À4ÐS^ÐhlÔ7m€ r(   FrQ   )rS   r[   Ú
all_models)T)r   r	   r   ÚnextÚitems)r$   r%   r-   rW   ÚgÚsolÚkeyÚvalueÚfirst_solutionÚsecond_solutionÚthird_solutions              r&   Ú"test_minisat22_minimal_satisfiablerf   —   sä  € Ü�gÓ�G€A€qˆ!ÚmÐÙ  ! q b¡&Ó*¨eÑ3Ð3Ð3Ù  ! q b¡&Ó*¨q°$¸¸5Ð.AÒAÐAÐAÙ Ø	ˆA‰óØ˜�I  5˜z¨A¨u°a¸Ð+>ÀÀDÈ!ÈTÐ@RÐUVÐX\Ð^_ÐafÐTgÐhñið ið iá Ø
ˆˆa‰�Q�B˜‘FÑóØ#$ d¨A¨tÐ"4°q¸%ÀÀEÐ6JÐ!KñLð Lð Lá  1 q¡5¨a¨R°!©VÑ"4Ó6¸A¸tÀQÈÈqÐRVÐ;WØ	
ˆD�!�T˜1˜dÐ# a¨°°4¸¸DÐ%AÀAÀtÈQÐPUÐWXÐZ_ÐC`ð;bñ bð bð bá  ! a¡%¨!¡)Ó.°1°d¸A¸tÀQÈÐ2MÒMÐMÐMÙ  1 q¡5¨Q°!©VÑ"4Ó6¸A¸tÀQÈÐ;NØ	
ˆD�!�TÐð;ñ ð ð á ¤*¨Q°Ó"2°QÑ"6Ó8¸QÀÀaÈÐ<NÒNÐNÐNÙ ¤*¨Q°Ó"2°a°RÑ"7Ó9¸aÀÈÈ5Ð=QÒQÐQÐQÜ�Q˜‘U˜Q‘Y¨+¸dÈdÔS€AÜ
ˆq‹'€CØ,/¯I©I«K×A™j˜c 5º5’cÐA€NÑAÜˆQ‹€CØ-0¯Y©Y«[×B™z˜s EºE’sÐB€OÑBÜˆQ‹€CØ,/¯I©I«K×A™j˜c 5º5’cÐA€NÑAØ Ò0Ð0Ð0Ø .Ò0Ð0Ð0Ø Ò/Ð/Ð/Ð/ùó BùãBùãAs$   Å
G Å#G Æ
G&ÆG&Æ8
G,ÇG,c                  óT   — t        d«      \  } }}t        | | |z	  z  | z  «      du sJ ‚y )Nr*   F)r   r   r,   s      r&   Útest_satisfiablerh   ²   s4   € Ü�gÓ�G€A€qˆ!Ü�q˜A ™F‘| q bÑ(Ó)¨UÑ2Ð2Ñ2r(   c                  ó  — t        d«      \  } }}t        | || z	  z	  «      du sJ ‚t        | ||z	  z	  | |z	  | |z	  z	  z	  «      du sJ ‚t        | |  z	  | |z	  z	  «      du sJ ‚t        | |z  |z  «      du sJ ‚t        | |z	  «      du sJ ‚y r=   )r   r   r,   s      r&   Ú
test_validrj   ·   s¯   € Ü�gÓ�G€A€qˆ!Ü��q˜A‘v‘Ó 4Ñ'Ð'Ð'Ü�!˜˜Q™‘- a¨1¡f°!°q±&Ñ%9Ñ:Ó;¸tÑCÐCÐCÜ�1�"˜˜‘(  Q¡Ñ'Ó(¨DÑ0Ð0Ð0Ü��Q‘˜‘Ó˜uÑ$Ð$Ð$Ü��a‘‹=˜EÑ!Ð!Ñ!r(   c            	      ó@  — t        d«      \  } }}t        d«      du sJ ‚t        | |z  | d|di«      du sJ ‚t        | |z  | di«      du sJ ‚t        | |z  |di«      du sJ ‚t        | |z  | d |di«      du sJ ‚t        | |z	  | di«      du sJ ‚t        | |z  | z  | d|d|di«      du sJ ‚t        t        | |«      | d|di«      du sJ ‚t        d«      du sJ ‚t        | |z  | d|di«      du sJ ‚t        | |z  | di«      du sJ ‚t        | |z  |di«      du sJ ‚t        | |z  | d|di«      du sJ ‚t        ||d i«      �J ‚t        | |z  | d|d i«      �J ‚t        | |z	  | d|d i«      �J ‚t        t        | |«      | d i«      �J ‚t        t        | |«      | d|d i«      �J ‚t        | |z  | did¬«      �J ‚t        |  | z  | did¬«      �J ‚t        | |z  | d|did¬«      du sJ ‚t        | |z  |  | z  z  | did¬«      du sJ ‚t        || z	  || z	  z	  |did¬«      du sJ ‚y )Nr*   TF)Údeep)r   r   r	   r,   s      r&   Útest_pl_truerm   À   sô  € Ü�gÓ�G€A€qˆ!Ü�4‹=˜DÑ Ð Ð Ü�A˜‘E˜A˜t Q¨Ð-Ó.°$Ñ6Ð6Ð6Ü�A˜‘E˜A˜t˜9Ó%¨Ñ-Ð-Ð-Ü�A˜‘E˜A˜t˜9Ó%¨Ñ-Ð-Ð-Ü�A˜‘E˜A˜t Q¨Ð-Ó.°$Ñ6Ð6Ð6Ü�A˜‘F˜Q ˜JÓ'¨4Ñ/Ð/Ð/Ü�A˜‘E˜Q˜B‘J  E¨1¨d°A°tÐ <Ó=ÀÑEÐEÐEÜ”:˜a Ó# a¨°°5Ð%9Ó:¸dÑBÐBÐBô �5‹>˜UÑ"Ð"Ð"Ü�A˜‘E˜A˜u a¨Ð/Ó0°EÑ9Ð9Ð9Ü�A˜‘E˜A˜u˜:Ó&¨%Ñ/Ð/Ð/Ü�A˜‘E˜A˜u˜:Ó&¨%Ñ/Ð/Ð/Ü�A˜‘E˜A˜u a¨Ð/Ó0°EÑ9Ð9Ð9ô �1�q˜$�iÓ Ð(Ð(Ð(Ü�A˜‘E˜A˜t Q¨Ð-Ó.Ð6Ð6Ð6Ü�A˜‘F˜Q  a¨Ð.Ó/Ð7Ð7Ð7Ü”:˜a Ó# a¨ YÓ/Ð7Ð7Ð7Ü”:˜a Ó# a¨¨q°$Ð%7Ó8Ð@Ð@Ð@ô �1�q‘5˜1˜e˜*¨4Ô0Ð8Ð8Ð8Ü�A�2˜˜‘7˜Q ˜J¨TÔ2Ð:Ð:Ð:Ü�1�q‘5˜1˜e Q¨Ð.°TÔ:¸eÑCÐCÐCÜ�1�q‘5˜Q˜B ! ™GÑ$ q¨$ i°dÔ;¸uÑDÐDÐDÜ�A˜‘F  Q¡Ñ'¨!¨T¨¸Ô>À$ÑFÐFÑFr(   c                  ó|   ‡ — ddl mŠ  t        t        d„ «       t        t        ˆ fd„«       t        t        d„ «       y )Nr   ©Úpic                  ó   — t        d«      S )NzJohn Cleese©r   r:   r(   r&   rV   z*test_pl_true_wrong_input.<locals>.<lambda>ã   s   € œw }Ó5€ r(   c                  ó,   •— t        d‰ z   ‰ dz  z   «      S )Né*   r2   rr   ro   s   €r&   rV   z*test_pl_true_wrong_input.<locals>.<lambda>ä   s   ø€ œw r¨B¡w°°q±Ñ'8Ó9€ r(   c                  ó   — t        d«      S )Nrt   rr   r:   r(   r&   rV   z*test_pl_true_wrong_input.<locals>.<lambda>å   s
   € œw r›{€ r(   )Úsympy.core.numbersrp   r   Ú
ValueErrorro   s   @r&   Útest_pl_true_wrong_inputrx   á   s'   ø€ Ý%Ü
Œ:Ñ5Ô6Ü
Œ:Ó9Ô:Ü
Œ:Ñ*Õ+r(   c                  óî   — t        d«      \  } }}t        | | |z	  | g«      du sJ ‚t        |t        | |«      | g«      du sJ ‚t        | |z	  |  | z	  z	  «      du sJ ‚t        | |z	  | |  z	  z	  «      du sJ ‚y )NzA, B, CFT)r   r   r	   r,   s      r&   Útest_entailsrz   è   sš   € Ü�iÓ �G€A€qˆ!Ü�1�q˜A‘v ˜r�lÓ# uÑ,Ð,Ð,Ü�1”z ! QÓ'¨Ð+Ó,°Ñ4Ð4Ð4Ü�A˜‘F   q b¡Ñ)Ó*¨eÑ3Ð3Ð3Ü�A˜‘F   q b¡Ñ)Ó*¨dÑ2Ð2Ñ2r(   c                  ó6  — t        d«      \  } }}t        «       }|j                  | |z	  «      du sJ ‚|j                  | || z	  z	  «      du sJ ‚|j                  | |z	  «       |j                  ||z	  «       |j                  | «      du sJ ‚|j                  |«      du sJ ‚|j                  |«      du sJ ‚|j                  |  «      du sJ ‚|j                  | «      du sJ ‚|j                  | «      du sJ ‚|j                  | |z	  «      du sJ ‚|j                  | «       |j                  | «      du sJ ‚|j                  |«      du sJ ‚|j                  |«      du sJ ‚|j                  | «      du sJ ‚|j	                  | «       |j                  |«      du sJ ‚y rJ   )r   r   ÚaskÚtellÚretract)r$   r%   r-   Úkbs       r&   Útest_PropKBr€   ð   sš  € Ü�gÓ�G€A€qˆ!Ü	‹€BØ�6‰6�!�q‘&‹>˜UÑ"Ð"Ð"Ø�6‰6�!˜˜Q™‘-Ó  DÑ(Ð(Ð(Ø‡G�GˆA�‰F„OØ‡G�GˆA�‰F„OØ�6‰6�!‹9˜ÑÐÐØ�6‰6�!‹9˜ÑÐÐØ�6‰6�!‹9˜ÑÐÐØ�6‰6�1�"‹:˜ÑÐÐØ�6‰6�1�"‹:˜ÑÐÐØ�6‰6�1�"‹:˜ÑÐÐØ�6‰6�!�q‘&‹>˜TÑ!Ð!Ð!Ø‡G�GˆA„JØ�6‰6�!‹9˜ÑÐÐØ�6‰6�!‹9˜ÑÐÐØ�6‰6�!‹9˜ÑÐÐØ�6‰6�1�"‹:˜ÑÐÐØ‡J�Jˆq„MØ�6‰6�!‹9˜ÑÐÑr(   c                  ó`   — t        «       } t        d«      \  }}}| j                  |«      du sJ ‚y)z"tolerant to bad inputr*   FN)r   r   r|   )r   r$   r%   r-   s       r&   Útest_propKB_tolerantr‚     s/   € ä	‹€BÜ�gÓ�G€A€qˆ!Ø�6‰6�!‹9˜ÑÐÑr(   c                  ój  — t        d«      \  } }t        j                  | |z  «      }t        t        j                  | |z  «      t        j                  | «      t        j                  |«      z  «      }t        j                  | «       t        j                  |«       z  }t        j                  | «      dt        j                  | |z  «      dit        j                  |«      dt        j                  | |z  «      dit        j                  | «      dt        j                  |«      dt        j                  | |z  «      dit        j                  | «      dt        j                  |«      dt        j                  | |z  «      dit        j                  | «      dt        j                  |«      dt        j                  | |z  «      dig}t	        t        |||«      d¬«      rJ ‚t	        t        ||| «      d¬«      |v sJ ‚t	        t        |||«      d¬«      rJ ‚t	        t        ||| «      d¬«      |v sJ ‚y )Nzx yTFr   rR   Údpll2)r   r   Úzeror   r   r   )ÚxÚyÚassumptionsÚfactsÚqueryÚrefutationss         r&   Útest_satisfiable_non_symbolsrŒ     s«  € Ü�5‹>�D€A€qÜ—&‘&˜˜1™“+€KÜ”A—F‘F˜1˜Q™3“K¤§¡¨£¬Q¯V©V°A«YÑ!6Ó7€EÜ�V‰V�A‹YˆJœ!Ÿ&™& ›)˜Ñ#€Eä	
�‰�‹�Dœ!Ÿ&™&  1¡›+ tÐ,Ü	
�‰�‹�Dœ!Ÿ&™&  1¡›+ tÐ,Ü	
�‰�‹�Dœ!Ÿ&™& ›) T¬1¯6©6°!°A±#«;¸Ð=Ü	
�‰�‹�Dœ!Ÿ&™& ›) U¬A¯F©F°1°Q±3«K¸Ð>Ü	
�‰�‹�Eœ1Ÿ6™6 !›9 d¬A¯F©F°1°Q±3«K¸Ð>ð@€Kô œ3˜{¨E°5Ó9ÀVÕLÐLÐLÜ”s˜;¨°¨vÓ6À&ÔIÈ[ÑXÐXÐXÜœ3˜{¨E°5Ó9ÀWÕMÐMÐMÜ”s˜;¨°¨vÓ6À'ÔJÈkÑYÐYÑYr(   c                  óì   — ddl m}  t        t        «      t        t        ik(  sJ ‚t        | j                  «      t        t        ik(  sJ ‚t        t        «      du sJ ‚t        | j                  «      du sJ ‚y )Nr   ©ÚSF)Úsympy.core.singletonr�   r   r
   r   rŽ   s    r&   Útest_satisfiable_boolr‘     sa   € Ý&Ü”tÓ¤¤t Ò,Ð,Ð,Ü�q—v‘vÓ¤4¬ ,Ò.Ð.Ð.Ü”uÓ Ñ&Ð&Ð&Ü�q—w‘wÓ 5Ñ(Ð(Ñ(r(   c                  óJ  ‡	— ddl m} m} t        t	        dd¬«      «      du sJ ‚t        t	        | |  z	  | z  d¬«      «      dgk(  sJ ‚t        t	        dd¬«      «      t        t        igk(  sJ ‚| d|di| d|dig}t	        | |z  d¬«      Š	|j                  t        ‰	«      «       |j                  t        ‰	«      «       t        t        ˆ	fd„«       |rJ ‚t        t	        t        | |«      d¬«      «      | d|di| d|digk(  sJ ‚| d|di| d|di| d|dig}t	        | |z	  d¬«      D ]  }|j                  |«       Œ |rJ ‚ddlm} ddlm}  |«       }t        d	«      D �cg c]  }t        |«      ‘Œ }}t	         ||Ž d¬«      Š	t        d
«      D ]  }t        ‰	«      rŒJ ‚ y c c}w )Nr   r#   FT)r\   c                  ó   •— t        ‰ «      S ©N)r]   )Úresults   €r&   rV   z-test_satisfiable_all_models.<locals>.<lambda>/  s   ø€ ¤$ v£,€ r(   )Únumbered_symbols)r   éd   é
   )Ú	sympy.abcr$   r%   r]   r   Úlistr
   Úremover   ÚStopIterationr	   Úsympy.utilities.iterablesr–   Úsympy.logic.boolalgr   Úrange)
r$   r%   ÚmodelsÚmodelr–   r   ÚsymÚiÚXr•   s
            @r&   Útest_satisfiable_all_modelsr¥   %  sº  ø€ ßÜ”˜E¨dÔ3Ó4¸Ñ=Ð=Ð=Ü”˜Q 1 "™W¨™M°dÔ;Ó<ÀÀÒGÐGÐGÜ”˜D¨TÔ2Ó3¼¼t¸°~ÒEÐEÐEà�$˜˜5Ð! A u¨a°Ð#6Ð7€FÜ˜˜Q™¨4Ô0€FØ
‡M�M”$�v“,ÔØ
‡M�M”$�v“,ÔÜ
Œ=Ó.Ô/ÙÐˆ:ä”œJ q¨!Ó,¸Ô>Ó?Øˆ��5Ð˜A˜t Q¨Ð-Ð.ò/ð /ð /ð �%˜˜EÐ" Q¨¨q°$Ð$7¸!¸TÀ1ÀdÐ9KÐL€FÜ˜Q !™V°Ô5ò ˆØ�‰�eÕðáÐˆ:õ
 ;Ý&Ù
Ó
€CÜ! #›JÖ'�qŒˆc�Ð'€AÐ'Ü™˜Q˜¨DÔ1€FÜ�2‹Yò ˆÜ�F�|Ðˆ|ñùò 	(s   ÅF c                  ób  — t        d«      } | st        d«       t        d«      \  }}}t        d«      \  }}}t        |dk\  |dk  z  «      du sJ ‚t        || z  «      du sJ ‚t        || |z  |z  z  «      }t	        |«      du sJ ‚||   du sJ ‚t        |dz  dk\  |dk  z  |d	kD  z  «      du sJ ‚y )
NÚz3úz3 not installed.r*   zx,y,zr2   r0   FTr3   )r!   r    r   r   Úbool)r§   r$   r%   r-   r†   r‡   Úzr¡   s           r&   Útest_z3r«   F  sÝ   € Ü	�tÓ	€BáÜÐ Ô!Ü�gÓ�G€A€qˆ!Ü�gÓ�G€A€qˆ!Ü˜1 ™6 a¨!¡eÑ,Ó-°Ñ6Ð6Ð6Ü˜1 ˜r™6Ó# uÑ,Ð,Ð,ä˜1   Q¡¨¡
Ñ+Ó,€EÜ�‹;˜$ÑÐÐØ�‰8�tÑÐÐô ˜1 ™6 Q™;¨1¨q©5Ñ1°Q¸±VÑ<Ó=ÀÑFÐFÑFr(   c                  óü   ‡— t        d«      } | €t        d«       d„ Šdˆfd„	}d„ }t        d«      D ]*  } |dd	d¬
«      }	 t        |«      } ||«      du}||k(  rŒ*J ‚ y # | j                  j
                  $ r Y ŒIw xY w)Nr§   r¨   c                 óf   — t        j                  | «      }t        «       }|j                  |«       |S r”   )r   Ú	from_propr   Úfrom_cnf)ÚbfÚcnfÚencs      r&   Úboolean_formula_to_encoded_cnfz<test_z3_vs_lra_dpll2.<locals>.boolean_formula_to_encoded_cnf]  s(   € Ü�m‰m˜BÓˆÜ‹lˆØ�‰�SÔØˆ
r(   r˜   r2   c                 ó2  •— | |k  sJ ‚t        ||d¬«      }|d |  D �cg c]  }|g‘Œ }}|| d  D ]8  }t        |t        «      r| }t        d| dz
  «      }||   j	                  |«       Œ: |D �cg c]
  }t        |Ž ‘Œ }}t        |Ž } ‰	|«      S c c}w c c}w )NF)Únum_variablesÚnum_constraintsÚrationalr   r0   )r   Ú
isinstancer   r   Úappendr   r   )
Únum_clausesr¶   Únum_varÚconstraintsÚconsÚclausesr£   Úclauser±   r³   s
            €r&   Úmake_random_cnfz-test_z3_vs_lra_dpll2.<locals>.make_random_cnfc  s¾   ø€ Ø˜oÒ-Ð-Ð-Ü)¸ÐQ`ÐkpÔqˆØ&1°,°;Ð&?Ö@˜d�D’6Ð@ˆÐ@Ø  Ð-ò 	$ˆDÜ˜$¤
Ô+Ø�u�Ü˜˜; q™=Ó)ˆAØ�A‰J×Ñ˜dÕ#ð		$ð .5Ö5 6”2�v’;Ð5ˆÐ5Ü�7ˆmˆÙ-¨cÓ2Ð2ùò Aùò 6s   ž
BÁ.Bc                 ó   — t        | d¬«      S )NT©Úuse_lra_theory)rM   )r†   s    r&   rV   z&test_z3_vs_lra_dpll2.<locals>.<lambda>q  s   € Ô&7¸È$Ô&O€ r(   é2   é   )rº   r¶   r»   F)é   r˜   r2   )r!   r    rŸ   r   Úz3typesÚZ3Exception)r§   rÀ   Úlra_dpll2_satisfiableÚ_r±   Úz3_satÚlra_dpll2_satr³   s          @r&   Útest_z3_vs_lra_dpll2rÍ   X  s›   ø€ Ü	�tÓ	€BØ	€zÜÐ Ô!òõ3ñ PÐä�2‹Yò 
'ˆÙ¨"¸bÈ!ÔLˆð	Ü# CÓ(ˆFñ .¨cÓ2¸%Ð?ˆà˜Ó&Ð&Ð&ñ
'øð
 �z‰z×%Ñ%ò 	Ùð	ús   Á AÁA;Á:A;c                  óØ  — t        d«      \  } }g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢ddgg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢ddgg d¢g d¢g d¢g d¢g d¢dgdgg}t        dd«      D �ci c]%  }|dk7  sŒ	|dk7  sŒt        j                  ||«      |“Œ' }}d|t        j                  | d«      <   d|t        j                  | d«      <   t        ||«      }t        |d ¬!«      d"u sJ ‚y c c}w )#Nzx,y)r0   r7   r4   )rÆ   é   iøÿÿÿéúÿÿÿéüÿÿÿ)éöÿÿÿé÷ÿÿÿr˜   é   rÑ   )iôÿÿÿé   é   )rÒ   é	   rÐ   rÔ   rÑ   )é   éñÿÿÿé   iíÿÿÿéïÿÿÿ)rÔ   rÐ   r˜   rÓ   )r×   rÔ   rÒ   rÓ   )r2   r7   r3   ióÿÿÿé   )rÙ   r6   rÛ   )iðÿÿÿrÙ   é   rÛ   )rÐ   rÓ   r˜   rÔ   rÑ   )é   r3   r4   )iéÿÿÿiêÿÿÿiëÿÿÿ)r˜   rÔ   rÒ   rÓ   )r×   rÔ   rÑ   rÒ   )é   rÐ   rÑ   iòÿÿÿ)rÒ   rÓ   r×   rÐ   rÔ   )é   iåÿÿÿiæÿÿÿ)rÙ   rÝ   iîÿÿÿrÛ   )rÆ   é   iùÿÿÿrÐ   rÑ   )iâÿÿÿiãÿÿÿé   rÖ   r0   é   rÔ   r   TrÂ   F)r   rŸ   r   ÚgtÚltr   r   )r†   r‡   r¾   r£   Úencodingr±   s         r&   Útest_issue_27733rç     sí   € Ü�5‹>�D€A€qÚÒ.Ò0EÂ}ÒVjÚ&Ò(8Ò:JÊKÐZ]Ð_aÐYbÒdqÚ"Ò$8º,ÊÒYjÚ¢°°R¨yÒ:NÒP^Ò`sÚ!¢>°B°4¸"¸ð	?€Gô (-¨Q°£|ÖK !°q¸B³wÀ1ÈÃ7”—‘�Q˜“
˜A‘ÐK€HÐKØ€HŒQ�T‰T�!�Q‹ZÑØ€HŒQ�T‰T�!�Q‹ZÑä
�W˜hÓ
'€CÜ�s¨4Ô0°EÑ9Ð9Ñ9ùò Ls   Á+
C'Á6C'Á<C'N)GÚ__doc__Úsympy.assumptions.askr   Úsympy.core.symbolr   Úsympy.core.relationalr   rž   r   r   r   r	   r
   r   Úsympy.logic.inferencer   r   r   r   r   r   Úsympy.logic.algorithms.dpllr   r   r   r   r   r   r   r   Úsympy.logic.algorithms.dpll2rM   Ú!sympy.logic.algorithms.z3_wrapperr   Úsympy.assumptions.cnfr   r   Ú!sympy.logic.tests.test_lra_theoryr   Úsympy.core.randomr   Úsympy.testing.pytestr   r    Úsympy.externalr!   r'   r.   r;   r>   rB   rD   rF   rH   rK   rN   rX   rf   rh   rj   rm   rx   rz   r€   r‚   rŒ   r‘   r¥   r«   rÍ   rç   r:   r(   r&   ú<module>rõ      sÒ   ðÙ 7å #Ý %Ý ,ß I× I÷2÷ 2÷÷ ó õ Oå <ß 1Ý AÝ %ç -Ý (ò#ò=ò=ò	FòFòKò?òKòMò Nò"Rò"0ò63ò
"òGòB,ò3òò.òZò )òòBGò$%'óN:r(   