Ë
    7^(hÂA  ã                   óž  — d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
m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 d d
lmZmZ d dlmZ d dlmZ d dlmZmZmZm Z  d dl!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+Z+d dl,m-Z-m.Z.m/Z/ 	 	 d$d„Z0d„ Z1d%d„Z2d„ Z3d„ Z4d„ Z5d„ Z6e.d„ «       Z7e.d„ «       Z8d„ Z9d„ Z:d„ Z;e.d „ «       Z<d!„ Z=d"„ Z>d#„ Z?y)&é    )ÚRationalÚIÚoo)ÚEq)Úsymbols)ÚS)ÚMatrix)Ú
randMatrix)ÚQ©ÚAnd)ÚxÚyÚz©ÚCNFÚ
EncodedCNF)Úcos©Úimport_module)Ú	LRASolverÚUnhandledInputÚLRARationalÚHANDLE_NEGATION)ÚrandomÚchoiceÚrandint)Úsympify)Ú	randprime)ÚStrictLessThanÚStrictGreaterThanN)ÚraisesÚXFAILÚskipc                 ó0  ‡‡— |fˆfd„	Št        d| dz   z  «      }g }t        |«      D ]k  }	t        ˆfd„|D «       «       ‰d¬«      }}
g }|s|t        |
|«      gz  }|s||
|k  |
|k\  gz  }|s||
|k  |
|kD  gz  }|j	                  t        |«      «       Œm |S )Nc                 óö   •— t        «       | k  rt        d«      S ‰r@t        d«      D �cg c]  }t        dd«      ‘Œ c}\  }}t	        ||«      t        ddg«      z  S t        dd«      t        ddg«      z  S c c}w )Nr   é   é2   éÿÿÿÿé   é
   )r   r   Úranger   r   r   r   )ÚsparsityÚ_Úint1Úint2Úrationals       €ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/logic/tests/test_lra_theory.pyÚrandz!make_random_problem.<locals>.rand   sq   ø€ Ü‹8�hÒÜ˜1“:ÐÙÜ49¸!³HÖ=¨qœ) A rÕ*Ò=‰JˆD�$Ü˜D $Ó'¬&°"°a°«/Ñ9Ð9ä˜1˜b“>¤F¨B°¨7£OÑ3Ð3ùò >s   ©A6zx1:%sr*   c              3   ó2   •K  — | ]  } ‰«       |z  –— Œ y ­w©N© )Ú.0r   r3   s     €r2   ú	<genexpr>z&make_random_problem.<locals>.<genexpr>%   s   øè ø€ Ò5 a‘t“v •zÑ5ùs   ƒr   )r-   )r   r,   Úsumr   Úappendr   )Únum_variablesÚnum_constraintsr-   r1   Údisable_strictÚdisable_nonstrictÚdisable_equalityÚ	variablesÚconstraintsr.   ÚlhsÚrhsÚoptionsr3   s      `         @r2   Úmake_random_problemrE      s»   ù€ àõ 4ô ˜ =°1Ñ#4Ñ5Ó6€IØ€KÜ�?Ó#ò 
,ˆÜÓ5¨9Ô5Ó5±tÀQÔ7GˆSˆØˆÙØœ˜3 ›�~Ñ%ˆGÙ Ø˜˜s™
 C¨3¡JÐ/Ñ/ˆGÙØ˜˜c™	 3¨¡9Ð-Ñ-ˆGà×Ñœ6 '›?Õ+ð
,ð Ðó    c                 óþ   — ddl m} ddlm} ddlm}  || Ž } |d«      }|r\ ||«      }|j                  «       }|j                  |«       t        |j                  «       «      }|dk(  ry|dk(  ry	t        d
|› �«      ‚y )Nr   r   )Úsmtlib_coder   Úz3ÚsatTÚunsatFz/z3 was not able to check the satisfiability of )Úsympy.external.importtoolsr   Úsympy.printing.smtlibrH   Úsympy.logic.boolalgr   ÚSolverÚfrom_stringÚstrÚcheckÚ
ValueError)	rA   r   rH   r   Úboolean_formularI   Úsmtlib_stringÚsÚress	            r2   Úcheck_if_satisfiable_with_z3rX   2   s   € Ý8Ý1Ý'Ù˜;Ð'€OÙ	�tÓ	€BÙ	Ù# OÓ4ˆØ�I‰I‹KˆØ	�‰�mÔ$Ü�!—'‘'“)‹nˆØ�%Š<ØØ�GŠ^ØäÐNÈÐN_Ð`ÓaÐað 
rF   c           	      ó  — t        d«      }t        |«      D ]R  }|j                  «       D ��ci c]  \  }}||d   |d   |z  z   “Œ }}}	 | D ]  }|j                  |«      dk(  rŒJ ‚ |c S  y c c}}w # t        $ r |dz  }Y Œlw xY w)Nr*   r   Tr'   )r   r,   ÚitemsÚsubsÚAssertionError)	ÚconstrÚ
assignmentÚiterÚepsr.   ÚkeyÚvalÚassignÚconss	            r2   Úfind_rational_assignmentre   D   s©   € Ü
�!‹*€Cä�4‹[ò ˆØ;E×;KÑ;KÓ;M×N©x¨s°C�#�s˜1‘v  A¡ s¡
Ñ*Ñ*ÐNˆÑNð	Øò 1�Ø—y‘y Ó(¨DÓ0Ð0Ð0ð1àŠMðð ùó Oøô
 ò 	Ø�a‘%ŠCð	ús   ­A-Á
A3Á$A3Á3BÂBc                 óf   — t        j                  | «      }t        «       }|j                  |«       |S r5   )r   Ú	from_propr   Úfrom_cnf)ÚbfÚcnfÚencs      r2   Úboolean_formula_to_encoded_cnfrl   R   s(   € Ü
�-‰-˜Ó
€CÜ
‹,€CØ‡L�L�ÔØ€JrF   c                  ó   — t        d«      \  } }t        dk\  t        t        z   dk  t        dt        z  z   t        z
  dk\  z  z  t	        t        t        z   d«      t        dt        z  z   t        z
  dkD  z  z  }t        |«      }t        j                  |d¬«      \  }}|j                  j                  dk(  sJ ‚t        |j                  «      d	k(  sJ ‚t        |j                  «      d
k(  sJ ‚|j                  t        g d¢g d¢g«      k(  sJ ‚|j                  j                  «       D �ch c]D  }t        |j                   «      |j"                  |j$                  |j&                  |j(                  f’ŒF c}h d£k(  sJ ‚y c c}w )Nzs1 s2r   r'   é   é   T©Útesting_mode)r'   é   z
[_s1, _s2]z	[x, y, z])r*   r*   r   r)   r   )r)   éþÿÿÿr*   r   r)   >   ©r   r   FFF©Ú_s1r'   NTF©rv   r'   TFF©Ú_s2éúÿÿÿTFF©ry   éüÿÿÿTFT)r   r   r   r   r   rl   r   Úfrom_encoded_cnfÚAÚshaperQ   ÚslackÚnonslackr	   Úenc_to_boundaryÚvaluesÚvarÚboundÚupperÚequalityÚstrict)Ús1Ús2Úphirk   Úlrar.   Úbs          r2   Útest_from_encoded_cnfrŽ   Y   sK  € Ü�WÓ�F€Bˆô �‰6”qœ1‘u ‘z¤a¨!¬a©%¡i´!¡m°qÑ&8Ñ9Ñ
:¼bÄÄQÁÈ»lÌaÐRSÔVWÑRWÉiÔZ[ÉmÐ^_ÑN_Ñ>`Ñ
a€CÜ
(¨Ó
-€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�5‰5�;‰;˜&Ò Ð Ð Üˆs�y‰y‹>˜\Ò)Ð)Ð)Üˆs�|‰|Ó Ò+Ð+Ð+Ø�5‰5”FÒ/Ú/ð1ó 2ò 2ð 2ð 2àJM×J]ÑJ]×JdÑJdÓJfÖgÀQŒS�—‘‹Z˜Ÿ™ !§'¡'¨1¯:©:°q·x±xÒ@Ògò l#ò #ð #ñ #ùÒgs   Ä'A	E;c                  ó¤  — ddl m}  ddlm}m} dt
        z  dt        z  z
  dk\  dt        z  dk\  dt        z  d	k\  g} |«       j                  t        |Ž «      } |«       }|j                  |«        | j                  |«      \  }}|j                  d
«       |j                  d«       |j                  d«       |j                  «       \  }}	|du sJ ‚y )Nr   )r   r   rs   r'   é   é÷ÿÿÿrz   rr   r*   é   T)Ú!sympy.logic.algorithms.lra_theoryr   Úsympy.assumptions.cnfr   r   r   r   rg   r   rh   r}   Ú
assert_litrR   )
r   r   r   rd   rj   rk   rŒ   r.   Úis_satr^   s
             r2   Útest_problemr—   m   s²   € Ý;ß5Ø”‰F�Qœ‘U‰N˜aÑ ¤a¡¨1¡¨b´1©f¸©kÐ:€DÙ
‹%�/‰/œ#˜t˜*Ó
%€CÙ
‹,€CØ‡L�L�ÔØ'ˆY×'Ñ'¨Ó,�F€CˆØ‡N�N�1ÔØ‡N�N�1ÔØ‡N�N�1ÔØŸ™›Ñ€FˆJØ�T‰>Ð‰>rF   c            
      ód  — t        d«      } | €t        d«       g }t        d«      \  }}}|j                  |d|z  z
  dk  d|z  d|z  z   dk  d	|z  d|z  z   dk  g«       |j                  d
|z  dk\  t	        d|z  d«      g«       |j                  d|z  dk  d|z  dk  g«       |j                  d
|z  dk\  d|z  dk  d
|z  dk  g«       |j                  t
        t        z   dk\  t
        t        z   dk  g«       |j                  t
        dk\  t
        t        z   dk  t
        dt        z  z   t        z
  dk\  g«       |j                  d|z  d|z  z
  dk\  d|z  dk\  d|z  dk\  g«       |j                  d|z  d
kD  d|z  dk  d|z  dk  g«       |j                  d|z  dk  d|z  dkD  g«       |j                  d|z  dk\  d|z  |z   dk\  d|z  d|z  z   dk  |dkD  g«       |j                  t	        |d«      t	        d|z  d«      t	        d	|z  d«      t	        d|z  d|z  z   d«      g«       |j                  t	        d|z  d«      t	        |d|z  z
  d«      t	        d	|z  d|z  z   d«      t	        d|z  d«      g«       |j                  d|z  dk  d|z  dk  g«       |j                  d
|z  d|z  z   dk\  d|z  dkD  d|z  d|z  z
  dk  d|z  d|z  z
  dk\  g«       |j                  |d|z  z   dk\  d|z  d|z  z
  dk\  d|z  d|z  z   dk  d
|z  d|z  z   d	k  g«       |j                  d|z  dk  d|z  d|z  z
  dk  d|z  d|z  z   dkD  d|z  d|z  z
  dkD  g«       |j                  d|z  d|z  z
  d	k\  d|z  d|z  z   dk  d	|z  dk  d|z  d	k  g«       d}t        d«      D �]`  }|dz  dk(  rt        ddd¬«      }nV|dz  dk(  rt        ddddd¬«      }n=|dz  dk(  rt        dddd¬«      }n%|dz  dk(  rt        ddd¬«      }nt        ddd¬«      }|t        |«      k  r||   }d|v sd|v rŒ�t        |Ž }|dk(  rŒ›t        j                  |«      }	t        «       }
|
j                  |	«       t!        d „ |
j"                  D «       «      sJ ‚t%        j&                  |
d¬!«      \  }}|j(                  }d|_        |j-                  «       D ��ci c]  \  }}||“Œ
 }}}|
j"                  D ��ch c]  }|D ]  }|’Œ Œ }}}|D �cg c]"  }||j.                  v sŒ|j.                  |   |f‘Œ$ }}t1        |d"„ ¬#«      }|D ]6  \  }}|j2                  r|j2                  d   dk(  r n|j5                  |«       Œ8 |j7                  «       }|d   dk(  rÆ|dz  }t9        |«      du sJ ‚|D �cg c]  }|j:                  ‘Œ }}|d   }|j-                  «       D ��ci c]  \  }}|j<                  |“Œ }}}t>        |v sMt@        |v sE|j-                  «       D ��ci c]  \  }}||d   “Œ }}}|D ]  }|jC                  |«      dk(  rŒJ ‚ �Œ�tE        ||«      }|��Œ­J ‚t9        |«      du sJ ‚|d   }t        |«      dk\  sJ ‚|D �ch c]   }|j.                  |    jG                  «       ’Œ" }}|D �ch c]  }|jC                  |«      ’Œ }}t9        |«      du sJ ‚tI        jJ                  |t        |«      dz
  «      D ]  }t9        |«      du rŒJ ‚ �Œc y c c}}w c c}}w c c}w c c}w c c}}w c c}}w c c}w c c}w )$NrI   zz3 is not installedzx1 x2 x3r’   éûÿÿÿrn   ro   r   iùÿÿÿéýÿÿÿr)   r|   rz   r�   r'   r*   rs   r‘   rr   é	   iøÿÿÿr+   é   iöÿÿÿr(   F)r;   r<   r1   T)r;   r<   r1   r?   r>   )r;   r<   r1   r=   é   c              3   ó$   K  — | ]  }d |v–— Œ
 y­w©r   Nr6   )r7   Úclauses     r2   r8   z'test_random_problems.<locals>.<genexpr>­   s   è ø€ Ò: v�1˜F”?Ñ:ùs   ‚rp   c                 ó~   — t        | d   j                  «      | d   j                  t        | d   j                  «      fS )Nr   )rQ   r„   r…   r†   )r   s    r2   ú<lambda>z&test_random_problems.<locals>.<lambda>·   s.   € ¬s°1°Q±4·8±8«}¸aÀ¹d¿j¹jÌ#ÈaÐPQÉdÏjÉjË/Ð.Z€ rF   )ra   )&r   r$   r   r:   r   r   r   r   r,   rE   Úlenr   r   rg   r   rh   ÚallÚdatar   r}   Ús_subsÚ
run_checksrZ   r‚   ÚsortedÚresultr•   rR   rX   Úfuncr„   r    r!   r[   re   Úget_inequalityÚ	itertoolsÚcombinations)rI   Úspecial_casesÚx1Úx2Úx3Úfeasible_countÚirA   r‹   rj   rk   rŒ   r.   r¦   ra   ÚvalueÚ
s_subs_revr    ÚlitÚlitsÚlÚboundsr�   Úfeasiblerd   Ú
cons_funcsr^   Úrat_assignmentÚconflictÚsubsets                                 r2   Útest_random_problemsr¿   |   sÜ  € Ü	�tÓ	€BØ	€zÜÐ"Ô#à€M¤W¨ZÓ%8™
˜˜B Ø×Ñ˜"˜q 2™v™+¨Ñ+¨Q°©V°a¸"±f©_ÀÑ-AÀ2ÈÁ7ÈQÐQSÉVÑCSÐWXÑCXÐYÔZØ×Ñ˜"˜r™' Q™,¬¨1¨r©6°2«Ð7Ô8Ø×Ñ˜"˜r™' A™+ q¨2¡v°¡|Ð4Ô5Ø×Ñ˜"˜r™' Q™,¨¨B©°"©°b¸2±gÀ±mÐDÔEØ×Ñœ!œa™% 1™*¤a¬!¡e¨q¡jÐ1Ô2Ø×Ñœ!˜q™&¤!¤a¡%¨1¡*¬a°!´a±%©i¼!©m¸qÑ.@ÐAÔBØ×Ñ˜"˜r™' A¨¡FÑ*¨aÑ/°°b±¸A±¸rÀB¹wÈ!¹|ÐLÔMØ×Ñ˜!˜b™& 2™+ r¨B¡w°¡|°Q¸±V¸q±[ÐAÔBØ×Ñ˜"˜R™% "™* a¨¡d¨R¡iÐ0Ô1Ø×Ñ˜"˜R™% 2™+ r¨"¡u¨r¡z°Q¡¸¸2¹ÀÀ"Á¹ÀqÑ8HÈ"ÈqÉ&ÐQÔRØ×Ñœ"˜R ›)¤R¨¨"©¨b£\´2°b¸±e¸R³=Ä"ÀQÀrÁTÈBÈrÉEÁ\ÐSTÓBUÐVÔWØ×Ñœ"˜Q˜r™T 1›+¤r¨"¨q°©t©)°RÓ'8¼"¸RÀ¹UÀQÀrÁT¹\È1Ó:MÌrÐRSÐTVÑRVÐXYË{Ð[Ô\Ø×Ñ˜"˜R™% !™) Q r¡T¨R¡ZÐ0Ô1Ø×Ñ˜"˜R™% ! B¡$™,¨"Ñ,¨c°"©f°q©j¸!¸B¹$ÀÀ2Á¹+È¹/È2ÈbÉ5ÐSTÐUWÑSWÉ<Ð[]ÑK]Ð^Ô_Ø×Ñ˜"˜q ™t™) r™/¨1¨R©4°!°B±$©;¸"Ñ+<¸aÀ¹dÀQÀrÁT¹kÈCÑ>OÐQSÐTVÑQVÐYZÐ[]ÑY]ÑQ]Ð`bÑQbÐcÔdØ×Ñ˜"˜R™% !™) R¨¡U¨Q¨r©T¡\°BÑ%6¸¸"¹¸qÀ¹t¹Àa¹ÈÈBÉÐQRÐSUÑQUÉÐXYÑIYÐZÔ[Ø×Ñ˜!˜B™$  2¡™+¨Ñ+¨Q¨r©T°A°b±D©[¸2Ñ-=¸rÀ"¹uÈ¹zÈ2ÈbÉ5ÐTVÉ;ÐWÔXà€NÜ�2‹Yó DDˆØˆq‰5�AŠ:Ü-¸AÈqÐ[`Ôa‰KØ�‰U�aŠZÜ-¸AÈqÐ[`ÐswØ@DôF‰Kà�‰U�aŠZÜ-¸AÈqÐ[`ÐquÔv‰KØ�‰U�aŠZÜ-¸AÈrÐ\aÔb‰Kä-¸AÈqÐ[`ÔaˆKàŒs�=Ó!Ò!Ø'¨Ñ*ˆKà�KÑ 4¨;Ñ#6Øä�;ÐˆØ�%Š<ØÜ�m‰m˜CÓ ˆ¬
« #Ø�‰�SÔÜÑ:°·±Ô:Ô:Ð:Ð:ä×+Ñ+¨C¸dÔC‰ˆˆQØ—‘ˆàˆŒØ39·<±<³>×B¡Z S¨%�e˜S‘jÐBˆ
ÑBØ"%§(¡(×=˜°fÒ=¨s’Ð=�Ð=ˆÑ=à7;ÖX°!¸qÀC×DWÑDWÒ?W�3×&Ñ& qÑ)¨1Ò-ÐXˆÐXÜ˜Ñ$ZÔ[ˆàò 	‰DˆAˆqØ�zŠz˜cŸj™j¨™m¨uÒ4ÙØ�N‰N˜1Õð	ð
 —9‘9“;ˆà�A‰;˜$ÒØ˜aÑˆNÜ/°Ó<ÀÑDÐDÐDØ0;Ö<¨˜$Ÿ)›)Ð<ˆJÐ<Ø! !™ˆJØ<F×<LÑ<LÓ<N×O©j¨c°5˜#Ÿ'™' E™/ÐOˆJÑOÜ" jÑ0Ô4EÈÑ4SØ>H×>NÑ>NÓ>P×Q±
°°U˜c 5¨¡8™mÐQ�
ÑQØ'ò 9�DØŸ9™9 ZÓ0°DÓ8Ð8Ð8ò9ô ":¸+ÀzÓ!R�Ø%Ò1Ð1Ð1ä/°Ó<ÀÑEÐEÐEà ‘{ˆHÜ�x“= AÒ%Ð%Ð%ØJRÖSÀQ˜×+Ñ+¨Q¨BÑ/×>Ñ>Õ@ÐSˆHÐSØ>FÖG°F˜Ÿ™ JÕ/ÐGˆHÐGÜ/°Ó9¸UÑBÐBÐBô $×0Ñ0°¼3¸x»=È¹?ÓKò D�Ü3°FÓ;¸tÒCÐCÐCòDñGDDùó< CùÛ=ùâXùò =ùãOùãQùò TùÚGs6   Ó
\Ó)\Ô \Ô\Ö"\×\Ø\"Ù8%\(Ú#\-c                  ó  — t        j                  t        «      t        j                  t        «      z  t        j                  t
        «      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        «      t        j                  t        d«      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        «      t        j                  t        «      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        «      t        j                  t
        «      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚y )NTrp   r’   r   Fr)   r'   )r   Úpositiver   ÚnegativeÚzeror   rl   r   r}   Úencodingrƒ   r•   r£   r‚   rR   Últ©ri   rk   rŒ   r.   r¶   s        r2   Útest_pos_neg_zerorÇ   Ü   s}  € ä	
�‰”A‹œŸ™¤A›Ñ	&¬¯©´«Ñ	2€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"ä	
�‰”A‹œŸ™œa ›Ñ	$€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"ä	
�‰”A‹œŸ™¤›Ñ	"€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"ä	
�‰”A‹œŸ™¤›Ñ	"€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜TÒ!Ð!Ñ!rF   c                  óØ  — t        j                  t        «      t        j                  t        d«      z  t        j                  t        «      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        «      t        j                  t        d«      z  t        j                  t        «      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        «      t        j                  t        «      z  } t        | «      }t        j                  |d¬«      \  }}|j                  j                  «       D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚y )Ni€–˜ Trp   r’   r   Fr'   )r   Úpositive_infiniter   rÅ   r   rl   r   r}   rÄ   rƒ   r•   r£   r‚   rR   ÚgtÚnegative_infiniterÆ   s        r2   Útest_pos_neg_infiniterÌ     s  € ä	
×	Ñ	œQÓ	¤!§$¡$¤q¨(Ó"3Ñ	3´a×6IÑ6IÌ!Ó6LÑ	L€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"ä	
×	Ñ	œQÓ	¤!§$¡$¤q¨(Ó"3Ñ	3´a×6IÑ6IÌ!Ó6LÑ	L€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜TÒ!Ð!Ð!ä	
×	Ñ	œQÓ	¤!×"5Ñ"5´aÓ"8Ñ	8€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ�|‰|×"Ñ"Ó$ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ñ"rF   c                  ó|  — t        j                  dd«      } t        | «      }t        j                  |d¬«      \  }}t        |j                  «      dk(  sJ ‚|dggk(  sJ ‚t        j                  dd«      } t        | «      }t        j                  |d¬«      \  }}t        |j                  «      dk(  sJ ‚|dggk(  sJ ‚y )Nr’   r'   Trp   r   r*   r)   )r   rÊ   rl   r   r}   r£   r‚   rÅ   )ri   rk   rŒ   Ú	conflictss       r2   Útest_binrel_evaluationrÏ   !  s¶   € Ü	
�‰ˆa�‹€BÜ
(¨Ó
,€CÜ×/Ñ/°À$ÔG�N€CˆÜˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø˜!˜˜ÒÐÐä	
�‰ˆa�‹€BÜ
(¨Ó
,€CÜ×/Ñ/°À$ÔG�N€CˆÜˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø˜"˜˜ÒÐÑrF   c                  óh  — t         du sJ ‚t        j                  t        d«      t        j                  t        d«       z  } t	        | «      }t        j                  |d¬«      \  }}|j                  D ]  }|D ]  }|j                  |«       Œ Œ t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        |j                  «       d   «      ddgddgfv sJ ‚t        j                  t        d«       t        j                  t        d«       z  } t	        | «      }t        j                  |d¬«      \  }}|j                  D ]  }|D ]  }|j                  |«       Œ Œ t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        d«       t        j                  t        d«       z  } t	        | «      }t        j                  |d¬«      \  }}|j                  D ]  }|D ]  }|j                  |«       Œ Œ t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        d«       t        j                  t        d«       z  } t	        | «      }t        j                  |d¬«      \  }}|j                  D ]  }|D ]  }|j                  |«       Œ Œ t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚t        j                  t        t        z   d«       t        j                   t        t        z
  d«       z  t        j                   t        d«       z  } t	        | «      }t        j                  |d¬«      \  }}|j                  D ]  }|D ]  }|j                  |«       Œ Œ t        |j                  «      d	k(  sJ ‚|j                  «       d   dk(  sJ ‚t        |j                  «       d   «      d	k(  sJ ‚t#        d
„ |j                  «       d   D «       «      sJ ‚y )NTr*   r   rp   r'   Fr)   rs   r’   c              3   ó&   K  — | ]	  }|d kD  –— Œ y­wrŸ   r6   )r7   r³   s     r2   r8   z test_negation.<locals>.<genexpr>_  s   è ø€ Ò-˜ˆq�1�uÑ-ùs   ‚)r   r   rÊ   r   rl   r   r}   r¥   r•   r£   r‚   rR   r¨   rÅ   Úler   Úger¤   )ri   rk   rŒ   r.   r    r¶   s         r2   Útest_negationrÔ   /  s»  € Ü˜dÑ"Ð"Ð"Ü	
�‰Œa�‹”q—t‘tœA˜q“z�kÑ	!€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ—(‘(ò  ˆØò 	 ˆCØ�N‰N˜3Õñ	 ð ô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"Ü�#—)‘)“+˜a‘.Ó! r¨1 g°°A¨wÐ%7Ñ7Ð7Ð7ä
�$‰$Œq�!‹*ˆœŸ™œQ ›
�{Ñ	"€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ—(‘(ò  ˆØò 	 ˆCØ�N‰N˜3Õñ	 ð ô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜TÒ!Ð!Ð!ä
�$‰$Œq�!‹*ˆœŸ™œQ ›
�{Ñ	"€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ—(‘(ò  ˆØò 	 ˆCØ�N‰N˜3Õñ	 ð ô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"ä
�$‰$Œq�!‹*ˆœŸ™œQ ›
�{Ñ	"€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ—(‘(ò  ˆØò 	 ˆCØ�N‰N˜3Õñ	 ð ô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"ä
�$‰$Œq”‰s�A‹,ˆœ!Ÿ$™$œq¤™s A›,˜Ñ	&¬!¯$©$¬q°!«*¨Ñ	4€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ—(‘(ò  ˆØò 	 ˆCØ�N‰N˜3Õñ	 ð ô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"Üˆs�y‰y‹{˜1‰~Ó !Ò#Ð#Ð#ÜÑ-˜cŸi™i›k¨!™nÔ-Ô-Ð-Ñ-rF   c                  óö  ‡— t         j                  } t        j                  d| «      t        j                  t        | «      z  }t        |«      Št        t        ˆfd„«       t        j                  dt        «      t        j                  t        t        «      z  }t        |«      Št        t        ˆfd„«       t        j                  dt        d«      «      t        j                  t        t        d«      «      z  }t        |«      Št        t        ˆfd„«       t        j                  dt        «      t        j                  t        t        «      z  }t        |«      Št        t        ˆfd„«       t        j                  t        dz  t        z   d«      }t        |«      Št        t        ˆfd„«       t        j                  t        t        «      t        z   d«      }t        |«      Št        t        ˆfd	„«       y )
Nr’   c                  ó2   •— t        j                  ‰ d¬«      S ©NTrp   ©r   r}   ©rk   s   €r2   r¢   z&test_unhandled_input.<locals>.<lambda>f  s   ø€ œy×9Ñ9¸#ÈDÔQ€ rF   c                  ó2   •— t        j                  ‰ d¬«      S r×   rØ   rÙ   s   €r2   r¢   z&test_unhandled_input.<locals>.<lambda>j  ó   ø€ ¤9×#=Ñ#=¸cÐPTÔ#U€ rF   Úinfc                  ó2   •— t        j                  ‰ d¬«      S r×   rØ   rÙ   s   €r2   r¢   z&test_unhandled_input.<locals>.<lambda>n  rÛ   rF   c                  ó2   •— t        j                  ‰ d¬«      S r×   rØ   rÙ   s   €r2   r¢   z&test_unhandled_input.<locals>.<lambda>r  rÛ   rF   r'   c                  ó2   •— t        j                  ‰ d¬«      S r×   rØ   rÙ   s   €r2   r¢   z&test_unhandled_input.<locals>.<lambda>w  rÛ   rF   c                  ó2   •— t        j                  ‰ d¬«      S r×   rØ   rÙ   s   €r2   r¢   z&test_unhandled_input.<locals>.<lambda>{  rÛ   rF   )r   ÚNaNr   rÊ   r   rl   r"   rS   r   r   Úfloatr   r   )Únanri   rk   s     @r2   Útest_unhandled_inputrä   b  s>  ø€ Ü
�%‰%€CÜ	
�‰ˆa�‹œŸ™œQ ›Ñ	$€BÜ
(¨Ó
,€CÜ
Œ:ÓQÔRä	
�‰ˆa”‹”a—d‘dœ1œa“jÑ	 €BÜ
(¨Ó
,€CÜ
Œ>ÓUÔVä	
�‰ˆa”�u“Ó	¤§¡¤a¬¨u«Ó!6Ñ	6€BÜ
(¨Ó
,€CÜ
Œ>ÓUÔVä	
�‰ˆa”‹”q—t‘tœAœr“{Ñ	"€BÜ
(¨Ó
,€CÜ
Œ>ÓUÔVô 
�‰Œa�‰d”Q‰h˜Ó	€BÜ
(¨Ó
,€CÜ
Œ>ÓUÔVä	
�‰Œc”!‹f”q‰j˜!Ó	€BÜ
(¨Ó
,€CÜ
Œ>ÓUÕVrF   c                  ó˜  — t          t        z
  t        d«       k\  t         dkD  z  t        t        d«      k\  z  } t        | «      }t	        j
                  |d¬«      \  }}t        |j                  j                  «       «      D ]  }|j                  |«      €Œ n t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚y )NrÜ   r   Trp   r’   )r   r   râ   rl   r   r}   r¨   rÄ   rƒ   r•   r£   r‚   rR   rÆ   s        r2   Ú!test_infinite_strict_inequalitiesræ   }  s·   € ô ˆ"Œq‰&”U˜5“\�MÑ
!¤a¨!¡eÑ	,´´U¸5³\Ñ0AÑ	B€BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆÜ�c—l‘l×)Ñ)Ó+Ó,ò ˆØ�>‰>˜#ÓÑ*Ùðô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜TÒ!Ð!Ñ!rF   c                  ó  — t        d«      D ]z  } t        d«      }|j                  «       }t        d«      D ]O  } t        dd«      t        dd«      }}|||f   dk7  sŒ&t	        j
                  |||«      j                  «       |k(  rŒOJ ‚ Œ| y )Nr+   rr   r   ro   )r,   r
   Úrrefr   r   Ú_pivot)r.   Úmrè   r³   Újs        r2   Ú
test_pivotrì   �  sŠ   € Ü�2‹Yò @ˆÜ�q‹MˆØ�v‰v‹xˆÜ�q“ò 	@ˆAÜ˜1˜a“=¤'¨!¨Q£-ˆqˆAØ��A�‰w˜!‹|Ü ×'Ñ'¨¨1¨aÓ0×5Ñ5Ó7¸4Ó?Ð?Ð?ñ	@ñ@rF   c                  óh  — t        j                  t        d«      t        j                  t        d«      z  } t	        | «      }t        j                  |d¬«      \  }}|j                  D ]  }|D ]  }|j                  |«       Œ Œ t        |j                  «      dk(  sJ ‚|j                  «       d   dk(  sJ ‚|j                  «        |j                  «       d   dk(  sJ ‚|j                  D ]Æ  }|j                  t        t!        d«      d«      k(  sJ ‚|j"                  dk(  sJ ‚|j$                  dk(  sJ ‚|j&                  t        t!        d«       d«      k(  sJ ‚|j(                  dk(  sJ ‚|j*                  dk(  sJ ‚|j,                  t        dd«      k(  sJ ‚|j.                  €J ‚|j0                  �ŒÆJ ‚ y )Nr*   Trp   r'   r   FrÜ   )r   rÓ   r   rÅ   rl   r   r}   r¥   r•   r£   r‚   rR   Úreset_boundsÚall_varr†   r   râ   Úupper_from_eqÚupper_from_negÚlowerÚlower_from_eqÚlower_from_negrc   r„   Úcol_idx)ri   rk   rŒ   r.   r    r¶   r„   s          r2   Útest_reset_boundsrö   š  s�  € Ü	
�‰Œa�‹”a—d‘dœ1˜a“jÑ	 €BÜ
(¨Ó
,€CÜ×'Ñ'¨¸$Ô?�F€CˆØ—(‘(ò  ˆØò 	 ˆCØ�N‰N˜3Õñ	 ð ô ˆs×"Ñ"Ó# qÒ(Ð(Ð(Ø�9‰9‹;�q‰>˜UÒ"Ð"Ð"à×ÑÔØ�9‰9‹;�q‰>˜TÒ!Ð!Ð!Ø�{‰{ò 	'ˆØ�y‰yœK¬¨e«°aÓ8Ò8Ð8Ð8Ø× Ñ  EÒ)Ð)Ð)Ø×!Ñ! UÒ*Ð*Ð*Ø�y‰yœK¬¨u«¨°qÓ9Ò9Ð9Ð9Ø× Ñ  EÒ)Ð)Ð)Ø×!Ñ! UÒ*Ð*Ð*Ø�z‰zœ[¨¨AÓ.Ò.Ð.Ð.Ø�w‰wÐ"Ð"Ð"Ø�{‰{Ñ&Ð&Ð&ñ	'rF   c                  óÌ   — t        «       } t        «       }|j                  | «       t        j                  |«      \  }}t        |«      dk(  sJ ‚|j                  «       di fk(  sJ ‚y )Nr   T)r   r   rh   r   r}   r£   rR   )rj   rk   rŒ   r½   s       r2   Útest_empty_cnfrø   ²  sZ   € Ü
‹%€CÜ
‹,€CØ‡L�L�ÔÜ×.Ñ.¨sÓ3�M€CˆÜˆx‹=˜AÒÐÐØ�9‰9‹;˜4 ˜*Ò$Ð$Ñ$rF   )r'   r'   gš™™™™™¹?TFFF)é   )@Úsympy.core.numbersr   r   r   Úsympy.core.relationalr   Úsympy.core.symbolr   Úsympy.core.singletonr   Úsympy.matrices.denser	   r
   Úsympy.assumptions.askr   rN   r   Ú	sympy.abcr   r   r   r”   r   r   Ú(sympy.functions.elementary.trigonometricr   Úsympy.externalr   r“   r   r   r   r   Úsympy.core.randomr   r   r   Úsympy.core.sympifyr   Úsympy.ntheory.generater   r    r!   r¬   Úsympy.testing.pytestr"   r#   r$   rE   rX   re   rl   rŽ   r—   r¿   rÇ   rÌ   rÏ   rÔ   rä   ræ   rì   rö   rø   r6   rF   r2   ú<module>r     sØ   ðß .Ñ .Ý $Ý %Ý "Ý 'Ý +Ý #Ý #ß Ñ ß 1Ý 8Ý (ç eÓ eß 5Ñ 5Ý &Ý ,ß CÛ ç 4Ñ 4àRVØZ_óò6bó$òò#ò(ò]Dð@ ñ#"ó ð#"ðL ñ#ó ð#ò:ò0.òfWð6 ñ"ó ð"ò$@ò'ó0%rF   