Ë
    óÿæiX  ã                   ó¶  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlmZm	Z	m
Z
 d dlmZ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 d dl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&  ed«      \  Z'Z(Z) G d„ de«      Z*e jV                  dejX                  e*   fd„«       Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=y) é    N)ÚEnum)ÚCallable)ÚAddÚImpliesÚsqrt)ÚMulÚPow)ÚSÚpiÚsymbolsÚFunctionÚRationalÚIntegerÚSymbolÚEqÚNeÚLeÚLtÚGtÚGe)Ú	PiecewiseÚexpÚsinÚcos)ÚQ©Úsmtlib_code)ÚraisesÚFailedzx,y,zc                   óº   — e Zd Z ej                  dej
                  «      Z ej                  dej
                  «      Z ej                  dej
                  «      Zy)Ú_Wz2Could not infer type of `.+`. Defaulting to float.z.Non-Symbol/Function `.+` will not be declared.zPNon-Boolean expression `.+` will not be asserted. Converting to SMTLib verbatim.N)	Ú__name__Ú
__module__Ú__qualname__ÚreÚcompileÚ
IGNORECASEÚDEFAULTING_TO_FLOATÚWILL_NOT_DECLAREÚWILL_NOT_ASSERT© ó    úu/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sympy/printing/tests/test_smtlib.pyr!   r!      s]   „ Ø$˜"Ÿ*™*Ð%YÐ[]×[hÑ[hÓiÐØ!�r—z‘zÐ"RÐTV×TaÑTaÓbÐØ �b—j‘jÐ!sÐuw÷  vCñ  vCó  D�Or,   r!   Úexpectedc           	   #   ó€  K  — g }|j                   }|–— g }t        t        j                  || «      «      D ]h  \  }\  }}|s|d|› d|› d�gz  }Œ|s|d|› d|j                  › d�gz  }Œ3|j
                  j                  |«      rŒO|d|› d|› d|j                  › d�gz  }Œj |rt        dj                  |«      «      ‚y ­w)	NÚ[z] Received unexpected warning `z`.z$] Did not receive expected warning `z] Warning `z` does not match expected Ú.Ú
)	ÚappendÚ	enumerateÚ	itertoolsÚzip_longestÚnameÚvalueÚmatchr   Újoin)r.   ÚwarnsÚlog_warnÚerrorsÚiÚwÚes          r-   Ú_check_warnsrA      sØ   è ø€ à €EØ�|‰|€HØ
‚Nà€FÜœy×4Ñ4°U¸HÓEÖF‰	ˆ‰6ˆAˆqÙØ˜˜1˜#Ð<¸Q¸C¸rÐBÐCÑC‰FÙØ˜˜1˜#ÐAÀ!Ç&Á&ÀÈÐLÐMÑM‰FØ—‘—‘˜qÕ!Ø˜˜1˜#˜[¨¨Ð+EÀaÇfÁfÀXÈQÐOÐPÑP‰Fð Gñ ”V˜DŸI™I fÓ-Ó.Ð.€vùs   ‚BB>Â9B>c                  ó|  — t        t        j                  gdz  «      5 } t        t	        d«      | ¬«      dk(  sJ ‚t        t	        d«      | ¬«      dk(  sJ ‚	 d d d «       t        g «      5 } t        t	        d«      «      dk(  sJ ‚t        t	        d«      «      dk(  sJ ‚	 d d d «       y # 1 sw Y   ŒQxY w# 1 sw Y   y xY w)Né   éC   ©r<   Ú67éÿÿÿÿz-1)rA   r!   r*   r   r   ©r?   s    r-   Útest_IntegerrI   -   s¥   € Ü	”r×)Ñ)Ð*¨QÑ.Ô	/°1Üœ7 2›;°Ô3°tÒ;Ð;Ð;Üœ7 2›;°Ô3°tÒ;Ð;Ñ;÷ 
0ô 
�bÔ	˜QÜœ7 2›;Ó'¨4Ò/Ð/Ð/Üœ7 2›;Ó'¨4Ò/Ð/Ñ/÷ 
Ð	÷ 
0Ð	/ú÷ 
Ð	ús   ž7B&Á)3B2Â&B/Â2B;c                  ó\  — t        t        j                  gdz  «      5 } t        t	        dd«      | ¬«      dk(  sJ ‚t        t	        dd«      | ¬«      dk(  sJ ‚t        t	        dd	«      | ¬«      d
k(  sJ ‚t        t	        dd	«      | ¬«      dk(  sJ ‚	 d d d «       t        t        j
                  t        j                  gdz  «      5 } t        t        t	        dd«      z   d| ¬«      dk(  sJ ‚t        t	        dd«      t        z  | ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   Œ‡xY w# 1 sw Y   y xY w)Né   é   é   rE   z(/ 3 7)é   é	   Ú2iùÿÿÿz(/ -3 7)éýÿÿÿrC   F©Úauto_declarer<   z(+ (/ 3 7) x)z$(declare-const x Real)
(* (/ 3 7) x))rA   r!   r*   r   r   r(   ÚxrH   s    r-   Útest_RationalrU   6   s  € Ü	”r×)Ñ)Ð*¨QÑ.Ô	/°1Üœ8 A q›>°AÔ6¸)ÒCÐCÐCÜœ8 B¨›?°QÔ7¸3Ò>Ð>Ð>Üœ8 A r›?°QÔ7¸:ÒEÐEÐEÜœ8 B¨Ó+°aÔ8¸IÒEÐEÑE÷	 
0ô 
”r×-Ñ-¬r×/AÑ/AÐBÀQÑFÔ	GÈ1Üœ1œx¨¨1›~Ñ-¸EÈAÔNÐRaÒaÐaÐaÜœ8 A q›>¬AÑ-¸Ô:ð ?Nò Nð 	Nñ N÷ 
HÐ	G÷ 
0Ð	/ú÷ 
HÐ	Gús   žA1DÃAD"ÄDÄ"D+c                  ó&  — t        t        j                  gdz  «      5 } t        t	        t
        t        «      d| ¬«      dk(  sJ ‚t        t        t
        t        «      d| ¬«      dk(  sJ ‚t        t        t
        t        «      d| ¬«      dk(  sJ ‚t        t        t
        t        «      d| ¬«      dk(  sJ ‚t        t        t
        t        «      d| ¬«      dk(  sJ ‚t        t        t
        t        «      d| ¬«      d	k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)
Né   FrR   ú(assert (= x y))ú(assert (not (= x y)))ú(assert (<= x y))ú(assert (< x y))ú(assert (> x y))ú(assert (>= x y)))rA   r!   r(   r   r   rT   Úyr   r   r   r   r   rH   s    r-   Útest_Relationalr_   C   sÚ   € Ü	”r×-Ñ-Ð.°Ñ3Ô	4¸Üœ2œa¤›8°%À!ÔDÐHZÒZÐZÐZÜœ2œa¤›8°%À!ÔDÐH`Ò`Ð`Ð`Üœ2œa¤›8°%À!ÔDÐH[Ò[Ð[Ð[Üœ2œa¤›8°%À!ÔDÐHZÒZÐZÐZÜœ2œa¤›8°%À!ÔDÐHZÒZÐZÐZÜœ2œa¤›8°%À!ÔDÐH[Ò[Ð[Ñ[÷ 
5×	4Ñ	4ús   žCDÄDc                  óÆ  ‡ — t        t        j                  gdz  «      5 Š t        t	        j
                  t        t        «      d‰ ¬«      dk(  sJ ‚t        t	        j                  t        t        «      d‰ ¬«      dk(  sJ ‚t        t	        j                  t        t        «      d‰ ¬«      dk(  sJ ‚t        t	        j                  t        t        «      d‰ ¬«      dk(  sJ ‚t        t	        j                  t        t        «      d‰ ¬«      dk(  sJ ‚t        t	        j                  t        t        «      d‰ ¬«      d	k(  sJ ‚	 d d d «       t        t        ˆ fd
„«       y # 1 sw Y   ŒxY w)NrW   FrR   rX   rY   r[   rZ   r\   r]   c                  óL   •— t        t        j                  t        «      ‰ ¬«      S ©NrE   )r   r   ÚcomplexrT   rH   s   €r-   Ú<lambda>z,test_AppliedBinaryRelation.<locals>.<lambda>V   s   ø€ œ{¬1¯9©9´Q«<À!ÕDr,   )rA   r!   r(   r   r   ÚeqrT   r^   ÚneÚltÚleÚgtÚger   Ú
ValueErrorrH   s   @r-   Útest_AppliedBinaryRelationrl   M   s  ø€ Ü	”r×-Ñ-Ð.°Ñ3Ô	4¸Üœ1Ÿ4™4¤¤1›:°EÀAÔFÐJ\Ò\Ð\Ð\Üœ1Ÿ4™4¤¤1›:°EÀAÔFÐJbÒbÐbÐbÜœ1Ÿ4™4¤¤1›:°EÀAÔFÐJ\Ò\Ð\Ð\Üœ1Ÿ4™4¤¤1›:°EÀAÔFÐJ]Ò]Ð]Ð]Üœ1Ÿ4™4¤¤1›:°EÀAÔFÐJ\Ò\Ð\Ð\Üœ1Ÿ4™4¤¤1›:°EÀAÔFÐJ]Ò]Ð]Ñ]÷ 
5ô Œ:ÓDÕE÷ 
5Ð	4ús   ŸDEÅE c                  ób  — t        t        j                  gdz  «      5 } t        t	        j
                  t        «      d| ¬«      dk(  sJ ‚t        t	        j                  t        «      d| ¬«      dk(  sJ ‚t        t	        j                  t        «      d| ¬«      dk(  sJ ‚t        t	        j                  t        «      d| ¬«      dk(  sJ ‚t        t	        j                  t        «      d| ¬«      dk(  sJ ‚t        t	        j                  t        «      d| ¬«      d	k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)
Né   FrR   z(assert (> x 0))z(assert (< x 0))z(assert (= x 0))z(assert (<= x 0))z(assert (>= x 0))z(assert (not (= x 0))))rA   r!   r(   r   r   ÚpositiverT   ÚnegativeÚzeroÚnonpositiveÚnonnegativeÚnonzerorH   s    r-   Útest_AppliedPredicateru   Y   sè   € Ü	”r×-Ñ-Ð.°Ñ2Ô	3°qÜœ1Ÿ:™:¤a›=°uÀqÔIÐM_Ò_Ð_Ð_Üœ1Ÿ:™:¤a›=°uÀqÔIÐM_Ò_Ð_Ð_Üœ1Ÿ6™6¤!›9°5À1ÔEÐI[Ò[Ð[Ð[Üœ1Ÿ=™=¬Ó+¸%È!ÔLÐPcÒcÐcÐcÜœ1Ÿ=™=¬Ó+¸%È!ÔLÐPcÒcÐcÐcÜœ1Ÿ9™9¤Q›<°eÀaÔHÐLdÒdÐdÑd÷ 
4×	3Ñ	3ús   žC=D%Ä%D.c            	      óh  — t        t        j                  t        j                  g«      5 } t	        t        t        «      t        t        «      z  d| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  g«      5 } t	        t        t        «      t        t        t        t        it        dit        j                  di| ¬«      dk(  sJ ‚	 d d d «       t        d«      }t        t        j                  g«      5 } t	         |t        «      |t        t        gt         f   i| ¬	«      d
k(  sJ ‚	 d d d «       t        g «      5 } t	         |t        «      |t        t        gt        f   i| ¬	«      dk(  sJ ‚t	        t#         |t        t$        «      t        «      |t        t        t        gt        f   i| ¬	«      dk(  sJ ‚t	        t#         |t        t$        «      t        «      |t        t        t        gt        f   i|dt"        di| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  gdz  «      5 } t	        t#         |t        t$        «      t        «      |dt"        di| ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   �Œ¸xY w# 1 sw Y   �ŒexY w# 1 sw Y   Œ�xY w# 1 sw Y   y xY w)NFrR   z(pow (sin x) (cos x))ÚINTEGER_TYPEÚABSOLUTE_VALUE_OF)Úsymbol_tableÚknown_typesÚknown_functionsr<   z4(declare-const x INTEGER_TYPE)
(ABSOLUTE_VALUE_OF x)Úf1©ry   r<   z:(declare-const x Bool)
(declare-fun f1 (Bool) Real)
(f1 x)zC(declare-const x Bool)
(declare-fun f1 (Bool) Bool)
(assert (f1 x))z|(declare-const x Int)
(declare-const y Bool)
(declare-const z Bool)
(declare-fun f1 (Int Bool) Bool)
(assert (= (f1 x z) y))ÚMY_KNOWN_FUNz==)ry   r{   r<   zf(declare-const x Int)
(declare-const y Bool)
(declare-const z Bool)
(assert (== (MY_KNOWN_FUN x z) y))rL   )r{   r<   zg(declare-const x Real)
(declare-const y Real)
(declare-const z Real)
(assert (== (MY_KNOWN_FUN x z) y)))rA   r!   r(   r*   r   r   rT   r   ÚabsÚintr^   ÚboolÚsympyÚAbsr   r   Úfloatr   Úz)r?   Úmy_fun1s     r-   Útest_Functionr‡   b   su  € Ü	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜœ3œq›6¤S¬£VÑ+¸%È!ÔLÐPgÒgÐgÑg÷ 
Dô 
”r×)Ñ)Ð*Ô	+¨qÜÜ”‹FÜœS¤!¤TÐ*Ü˜nÐ-Ü"ŸY™YÐ(;Ð<Øô
ð%ò%ð 	%ñ %÷ 
,ô �t‹n€GÜ	”r×)Ñ)Ð*Ô	+¨qÜÙ”A‹JØ!¤8¬T¨F´E¨MÑ#:Ð;Øô
ðò	ð 	ñ ÷ 
,ô 
�bÔ	˜QÜÙ”A‹JØ!¤8¬T¨F´D¨LÑ#9Ð:Øô
ðò	ð 	ð ô Ü‰w”qœ!‹}œaÓ Ø!¤8¬S´$¨K¼Ð,=Ñ#>Ð?Øô
ð'ò	'ð 	'ð 'ô Ü‰w”qœ!‹}œaÓ Ø!¤8¬S´$¨K¼Ð,=Ñ#>Ð?Ø$ n´b¸$Ð?Øô	
ð
2ò2ð 	2ñ 2÷' 
ô: 
”r×-Ñ-Ð.°Ñ2Ô	3°qÜÜ‰w”qœ!‹}œaÓ Ø$ n´b¸$Ð?Øô
ð2ò	2ð 	2ñ 2÷ 
4Ð	3÷i 
DÑ	Cú÷ 
,Ñ	+ú÷ 
,Ñ	+ú÷ 
Ð	ú÷: 
4Ð	3ús=   ª1I5Á>AJÃ92JÄ?CJÈ29J(É5I?ÊJÊJÊJ%Ê(J1c                  ó®  — t        t        j                  t        j                  g«      5 } t	        t
        dz  d| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  t        j                  g«      5 } t	        t
        t        dz  z  d| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  g«      5 } t	        t
        t        dd«      z  d| ¬«      dk(  sJ ‚t        dd	¬
«      }t        dd	¬«      }t        d«      }d„ }d ||«      dz  |||z  z
  z  z  |dz  |z   z  }d d d «       t        g «      5 } t	        t        dk  «      t        |kD  |«      |d	z  t        dt        dd«      z   «      g| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  g«      5 } t	        t        dt        t        |d¬«      dd¬«      d¬«      | ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   �ŒÕxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒíxY w# 1 sw Y   ŒšxY w# 1 sw Y   y xY w)NrL   FrR   z	(pow x 3)z(pow x (pow y 3))rC   z(pow x (/ 2 3))ÚaT©ÚintegerÚb©ÚrealÚcc                 ó   — d| z  S )NrC   r+   )rT   s    r-   Úgztest_Pow.<locals>.g®   s
   € ˜˜Q™�,r,   é   g      @rE   zÕ(declare-const a Int)
(declare-const b Real)
(declare-const c Bool)
(assert (= (< a 2) c))
(assert (= (> b a) c))
(assert c)
(assert (= (* (pow (* 7.0 a) (+ (pow b a) (* -1 a))) (pow (+ b (pow a 2)) -1)) (/ 7 3)))éþÿÿÿ©ÚevaluaterG   zG(declare-const b Real)
(declare-const c Real)
(* -2 c (pow (* b b) -1)))rA   r!   r(   r*   r   rT   r^   r   r   r   r   r	   )r?   r‰   rŒ   r�   r‘   Úexprs         r-   Útest_Powr—   ¢   s  € Ü	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜœ1 ™6°ÀÔBÀkÒQÐQÑQ÷ 
Dä	”r×-Ñ-¬r×/EÑ/EÄr×GYÑGYÐZÔ	[Ð_`Üœ1¤ a¡™=°uÀqÔIÐM`Ò`Ð`Ñ`÷ 
\ä	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜœ1¤¨¨A£Ñ.¸UÈQÔOÐSdÒdÐdÐdä�3 Ô%ˆÜ�3˜TÔ"ˆÜ�3‹Kˆâð ‘A�a“D˜3‘J A¨¨Q©¡JÑ/Ñ/°1¸±6¸A±:Ñ>ˆ÷ 
Dô 
�bÔ	˜QÜä�1�q‘5˜!“Ü�1�q‘5˜!“Ø�D‘Ü�4˜œX a¨›^Ñ+Ó,ð	ð ô
ð	òð 	ñ ÷ 
ô( 
”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜÜ��A”sœ3˜q !¨eÔ4°bÀ5ÔIÐTYÔZØô
ð)ò)ð 	)ñ )÷ 
DÐ	C÷I 
DÑ	Cúç	[Ñ	[úç	CÐ	Cú÷ 
Ð	ú÷( 
DÐ	Cús=   ªHÂ"H&ÃA-H3ÅAH?Ç8IÈH#È&H0È3H<È?IÉIc                  ób  — t        t        j                  t        j                  t        j                  g«      5 } t	        t
        t        z  d| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  t        j                  g«      5 } t	        t
        t        z   d| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  g«      5 } t	        t
         d| ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   ŒµxY w# 1 sw Y   ŒaxY w# 1 sw Y   y xY w)NFrR   z(* x y)z(+ x y)z(* -1 x))rA   r!   r(   r*   r   rT   r^   rH   s    r-   Útest_basic_opsr™   Ð   së   € Ü	”r×-Ñ-¬r×/EÑ/EÄr×GYÑGYÐZÔ	[Ð_`Üœ1œq™5¨u¸qÔAÀYÒNÐNÑN÷ 
\ô 
”r×-Ñ-¬r×/EÑ/EÄr×GYÑGYÐZÔ	[Ð_`Üœ1œq™5¨u¸qÔAÀYÒNÐNÑN÷ 
\ô 
”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜœA˜2¨E¸AÔ>À*ÒLÐLÑL÷ 
DÐ	C÷ 
\Ð	[ú÷ 
\Ð	[ú÷ 
DÐ	Cús#   ¹DÂDÃ*D%ÄDÄD"Ä%D.c                  óÒ  ‡‡‡‡‡	— ddl mŠ ddlmŠmŠmŠ	  G ˆˆˆˆˆ	fd„d‰«      Št        d«      } t        t        j                  g«      5 }t         ‰t        ddft         | t        «       | t        «      «      «      | t        t        gt        f   i|¬	«      d
k(  sJ ‚	 d d d «       t        t        j                  gdz  «      5 }t         ‰t        ddft        ddft!        t        t        t        «      t         | t        «       | t        «      «      «      «      | t        t        gt        f   i|¬	«      dk(  sJ ‚	 d d d «       t#        dd¬«      }t#        dd¬«      }t#        d«      }t        g «      5 }t         ‰|ddf ‰|ddft!        ||k  t%        |«      |k  «      |z  «      «      |¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   �Œ%xY w# 1 sw Y   Œ“xY w# 1 sw Y   y xY w)Nr   )ÚBoolean)ÚIntervalÚTupleÚsympifyc                   óH   •— e Zd Zˆfd„Zed„ «       Zed„ «       Zˆ ˆˆˆfd„Zy)ú*test_quantifier_extensions.<locals>.ForAllc                 ó*  •— | j                   D ���cg c]E  \  }}}|j                  |j                  |j                  |j                  |       ‰||«      g«      ‘ŒG }}}}|j                  d|j                  d|«      | j
                  g«      S c c}}}w )NÚforallÚ )ÚlimitsÚ_s_exprr7   Ú_known_typesry   Úfunction)ÚselfÚprinterÚsymÚstartÚendÚbound_symbol_declarationsrœ   s         €r-   Ú_smtlibz2test_quantifier_extensions.<locals>.ForAll._smtlibå   sŸ   ø€ ð
 +/¯+ª+õ	)ñ +6‘�s˜E 3ð —‘ §¡Ø×(Ñ(¨×)=Ñ)=¸cÑ)BÑCÙ˜U CÓ(ð+õ ð +6ð	 &ò )ð —?‘? 8Ø—‘ Ð$=Ó>Ø—‘ð.ó ð ùô)s   ’A
Bc                 óN   — | j                   D ��ch c]  \  }}}|’Œ
 c}}S c c}}w ©N)r¤   )r¨   ÚsÚ_s      r-   Úbound_symbolsz8test_quantifier_extensions.<locals>.ForAll.bound_symbolsñ   s$   € à%)§[¢[Ô1¡[™'˜!˜Q ’A [Ò1Ð1ùÓ1s   �!c                 óÀ   — | j                   D �ch c]  }|j                  ’Œ }}| j                  j                  D �ch c]  }|j                  |vr|’Œ c}S c c}w c c}w r°   )r³   r7   r§   Úfree_symbols)r¨   r±   Úbound_symbol_namess      r-   rµ   z7test_quantifier_extensions.<locals>.ForAll.free_symbolsõ   se   € à26×2DÒ2DÓ!EÑ2D¨Q !§&£&Ð2DÐÐ!EàŸ=™=×5Ò5óÙ5�aØ—6‘6Ð!3Ñ3ò Ð5ñð ùò "Fùòs
   �A¼Ac                 óú  •— |D �cg c]  }t        |t        ‰f«      sŒ ‰	|«      ‘Œ }}|D �cg c]  }t        |‰«      sŒ ‰	|«      ‘Œ }}t        |«      t        |«      z   t        |«      k(  sJ ‚t        |«      dk(  sJ ‚|d   }t        |‰«      r, ‰j                  ‰g||j                  z   ¢|j
                  ‘­Ž S ‰j                  | «      }t        ||gz   «      |_        ||_        ||_        |S c c}w c c}w )Nr’   r   )Ú
isinstanceÚtupleÚlenÚ__new__r¤   r§   Ú_args)
ÚclsÚargsr‰   r¤   r§   Úinstr›   ÚForAllr�   rž   s
         €€€€r-   r»   z2test_quantifier_extensions.<locals>.ForAll.__new__ý   s   ø€ Ù*.ÓP©$ Q´*¸QÄÈÀÕ2O‘g˜a•j¨$ˆFÐPÙ,0ÓK©D q´J¸qÀ'Õ4J™ �
¨DˆHÐKÜ�v“;¤ X£Ñ.´#°d³)Ò;Ð;Ð;Ü�x“= AÒ%Ð%Ð%Ø ‘{ˆHä˜( FÔ+°N°F·N±NØð5Ø  8§?¡?Ñ2ð5Ø5=×5FÑ5Fò5ð .ð —?‘? 3Ó'ˆDÜ˜v¨¨
Ñ2Ó3ˆDŒJØ ˆDŒKØ$ˆDŒMØˆKùò QùÚKs   †C3ž
C3®C8Á 
C8N)r"   r#   r$   r®   Úpropertyr³   rµ   r»   )r›   rÀ   rœ   r�   rž   s   €€€€€r-   rÀ   r    ä   s:   ø„ ô
	ð 
ñ	2ó 
ð	2ð 
ñ	ó 
ð	÷	ð 	r,   rÀ   ÚfiÖÿÿÿé   r}   z,(assert (forall ( (x Real [-42, 21])) true))rC   iœÿÿÿrL   zs(declare-fun f (Real) Real)
(assert (forall ( (x Real [-42, 21]) (y Real [-100, 3])) (=> (= x y) (= (f x) (f y)))))r‰   TrŠ   rŒ   r�   r�   éd   rE   zx(declare-const c Bool)
(assert (forall ( (a Int [2, 100]) (b Real [2, 100])) (or c (=> (< a b) (< (pow a (/ 1 2)) b))))))Úsympy.logic.boolalgr›   r‚   rœ   r�   rž   r   rA   r!   r(   r   rT   r   r   r„   r^   r   r   r   )
rÂ   r?   r‰   rŒ   r�   r›   rÀ   rœ   r�   rž   s
        @@@@@r-   Útest_quantifier_extensionsrÆ   ß   sÈ  ü€ Ý+ß.Ñ.÷'ò '�ô 'ôV 	�‹€AÜ	”r×-Ñ-Ð.Ô	/°1ÜÙ”A�s˜C�=¤"¡Q¤q£T©1¬Q«4£.Ó1ØœX¤u g¬u nÑ5Ð6Øô
ð <ò	<ð 	<ñ <÷ 
0ô 
”r×-Ñ-Ð.°Ñ2Ô	3°qÜÙÜ�C˜�¤ 4¨˜|Üœœ1œa›¤"¡Q¤q£T©1¬Q«4£.Ó1óð œX¤u g¬u nÑ5Ð6Øô
ðòð 	ñ ÷ 
4ô 	ˆs˜DÔ!€AÜˆs˜Ô€AÜˆs‹€Aä	�bÔ	˜QÜÙØ�A�s�™VØ˜˜3�KÜ˜A ™E¤4¨£7¨Q¡;Ó/°!Ñ3óóð
 ô
ðò
ð 
	ñ 
÷ 
Ð	÷3 
0Ñ	/ú÷ 
4Ð	3ú÷$ 
Ð	ús'   ÁAGÃA8GÅ7AGÇGÇGÇG&c                  ó  — t        t        j                  g«      5 } t        dt        z  t        di| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  g«      5 } t        t        t        dd¬«      dt        z  gt        di| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  g«      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d¬«      t        j                  d	t        j                  d
t        j                  dit        dt        did| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  g«      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d¬«      t        j                  d	it        dt        did| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  g«      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d¬«      t        did| ¬«      dk(  sJ ‚	 d d d «       t        t        j                  g«      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d¬«      t        j                  dit        did| ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   �Œ„xY w# 1 sw Y   �Œ;xY w# 1 sw Y   �Œ`xY w# 1 sw Y   �Œ¥xY w# 1 sw Y   �ŒxY w# 1 sw Y   y xY w)Nr’   ÚMY_PI)Úknown_constantsr<   z(pow MY_PI -1)g…ëQ¸	@Fr”   z&(assert (= MY_PI 3.14))
(pow MY_PI -1)Úpr‘   r@   Úplusr   rL   )rÉ   r{   Ú	precisionr<   z!(plus 0 1 -1 (/ 1 2) (exp 1) p g)z$(plus 0 1 -1 (/ 1 2) (exp 1) p 1.62))r{   rÌ   r<   z$(plus 0 1 -1 (/ 1 2) 2.72 3.14 1.62)z!(plus 0 1 -1 (/ 1 2) e 3.14 1.62))rA   r!   r*   r   r   r   r   r
   ÚZeroÚOneÚNegativeOneÚHalfÚExp1ÚPiÚGoldenRatior   rH   s    r-   Útest_mix_number_mult_symbolsrÔ   7  s  € Ü	”r×)Ñ)Ð*Ô	+¨qÜØ”‰FÜ ˜MØô
ð ò	ð 	ñ ÷ 
,ô 
”r×)Ñ)Ð*Ô	+¨qÜä”2�t eÔ,Ø”B‘ðô   ˜MØô
ðòð 	ñ ÷ 
,ô 
”r×)Ñ)Ð*Ô	+¨qÜÜ”—‘œŸ™œqŸ}™}¬a¯f©fÜ—‘œŸ™œaŸm™m°eô=ô —‘�cœ1Ÿ=™=¨#Ü—‘˜ðô
 �VÜ�Uðð Øô
ð 1ò1ð 	1ñ 1÷ 
,ô  
”r×)Ñ)Ð*Ô	+¨qÜÜ”—‘œŸ™œqŸ}™}¬a¯f©fÜ—‘œŸ™œaŸm™m°eô=ô —‘�cðô �VÜ�Uðð Øô
ð 4ò4ð 	4ñ 4÷ 
,ô 
”r×)Ñ)Ð*Ô	+¨qÜÜ”—‘œŸ™œqŸ}™}¬a¯f©fÜ—‘œŸ™œaŸm™m°eô=ä  &˜MØØô
ð 4ò4ð 	4ñ 4÷ 
,ô 
”r×)Ñ)Ð*Ô	+¨qÜÜ”—‘œŸ™œqŸ}™}¬a¯f©fÜ—‘œŸ™œaŸm™m°eô=äŸV™V S˜MÜ  &˜MØØô
ð 1ò1ð 	1ñ 1÷ 
,Ð	+÷u 
,Ñ	+ú÷ 
,Ñ	+ú÷ 
,Ñ	+ú÷  
,Ñ	+ú÷ 
,Ñ	+ú÷ 
,Ð	+úsK   ›!N?Á3OÂ5COÆB%O&É%BO3ÌBP Î?O	ÏOÏO#Ï&O0Ï3O=Ð P	c                  ó  — t        g «      5 } t        t        t        z  | ¬«      dk(  sJ ‚t        t        t        z  | ¬«      dk(  sJ ‚t        t         | ¬«      dk(  sJ ‚t        t        t        z  t        z  | ¬«      dk(  sJ ‚	 d d d «       t        t
        j                  g«      5 } t        t        t         z  t        dkD  z  | ¬«      dk(  sJ ‚	 d d d «       t        d«      }t        d	«      }t        d
«      }t        t
        j                  g«      5 } t        t         |t        «      t        «      t        t         |t        «      «      g|t        t        gt        f   |t        t        gt        f   i| ¬«      dk(  sJ ‚	 d d d «       t        g «      5 } t        t         |t        «      t        «      t        t         |t        «      «      g|t        t        gt        f   |t        t        gt        f   i| ¬«      dk(  sJ ‚	 d d d «       t        g «      5 } t        t         |t        «      t        «      t         | |t        «      «      t        «      t         | | |t        «      «      «      t        «      g|t        t        gt        f   |t        t        gt        f   |t        t        gt        f   i| ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   �ŒLxY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒhxY w# 1 sw Y   ŒòxY w# 1 sw Y   y xY w)NrE   z@(declare-const x Bool)
(declare-const y Bool)
(assert (and x y))z?(declare-const x Bool)
(declare-const y Bool)
(assert (or x y))z'(declare-const x Bool)
(assert (not x))zY(declare-const x Bool)
(declare-const y Bool)
(declare-const z Bool)
(assert (and x y z))rL   zj(declare-const x Bool)
(declare-const y Bool)
(declare-const z Real)
(assert (or (> z 3) (and x (not y))))rÂ   r‘   Úhr}   z¤(declare-const x Bool)
(declare-const y Real)
(declare-const z Bool)
(declare-fun f (Bool) Int)
(declare-fun g (Bool) Int)
(assert (> (f x) y))
(assert (< y (g z)))z£(declare-const x Bool)
(declare-const y Int)
(declare-const z Bool)
(declare-fun f (Bool) Int)
(declare-fun g (Bool) Int)
(assert (= (f x) y))
(assert (< y (g z)))zà(declare-const x Real)
(declare-const y Int)
(declare-const z Bool)
(declare-fun f (Real) Int)
(declare-fun g (Int) Bool)
(declare-fun h (Bool) Real)
(assert (= (f x) y))
(assert (= (g (f x)) z))
(assert (= (h (g (f x))) x)))rA   r   rT   r^   r…   r!   r(   r   r   r   r   r�   r€   r   r„   )r?   rÂ   r‘   rÖ   s       r-   Útest_booleanr×   }  sÛ  € Ü	�bÔ	˜QÜœ1œq™5¨1Ô-ð 2Fò Fð 	Fð Fô œ1œq™5¨1Ô-ð 2Eò Eð 	Eð Eô œA˜2¨Ô*ð /Aò Að 	Að Aäœ1œq™5¤1™9¨qÔ1ð 6Lò Lð 	Lñ L÷ 
ô 
”r×-Ñ-Ð.Ô	/°1ÜœA¤ ™F¤q¨1¡uÑ-¸Ô:ð ?fò fð 	fñ f÷ 
0ô 	�‹€AÜ�‹€AÜ�‹€AÜ	”r×-Ñ-Ð.Ô	/°1ÜÜ‘”!“”a‹[Ü”‘1”Q“4‹[ðð ”8œT˜F¤C˜KÑ(¨!¬X´t°f¼c°kÑ-Bðàô
ð$ò$ð 	$ñ $÷ 
0ô 
�bÔ	˜QÜÜ‘”!“”a‹[Ü”‘1”Q“4‹[ðð ”8œT˜F¤C˜KÑ(¨!¬X´t°f¼c°kÑ-Bðàô
ð$ò$ð 	$ñ $÷ 
ô 
�bÔ	˜QÜÜ‘”!“”a‹[Ü‘‘!”A“$“œ‹^Ü‘‘!‘A”a“D“'“
œAÓð ð ”8œU˜G¤S˜LÑ)Ø”8œS˜E¤4˜KÑ(Ø”8œT˜F¤E˜MÑ*ðð
 ô

ð,ò,ð 	,ñ ,÷ 
Ð	÷k 
Ñ	ú÷ 
0Ñ	/ú÷ 
0Ñ	/ú÷ 
Ð	ú÷ 
Ð	ús?   ŒA6KÂ%)KÄA.K'ÆA.K4ÈB-L ËKËK$Ë'K1Ë4K=Ì L	c            
      ó@  ‡ ‡— t        t        j                  t        j                  g«      5 Št	        t        t        t        dk  ft        dz  df«      d‰¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  g«      5 Št	        t        t        dz  t        dk  ft        dz  t        dk  ft        dz  t        dk  ft        d	z  df«      d‰¬«      d
k(  sJ ‚	 d d d «       t        t        t        dk  ft        dz  t        dkD  ft        t        «      t        dkD  f«      Š t        t        j                  t        j                  g«      5 Št        t        ˆ ˆfd„«       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   Œ�xY w# 1 sw Y   y xY w)Nr’   rC   TFrR   z(ite (< x 1) x (pow x 2))rL   rK   é   zQ(ite (< x 1) (pow x 2) (ite (< x 2) (pow x 3) (ite (< x 3) (pow x 4) (pow x 5))))r   c                  ó   •— t        ‰ ‰¬«      S rb   r   ©r–   r?   s   €€r-   rd   z'test_smtlib_piecewise.<locals>.<lambda>î  s   ø€ ¤{°4À!Õ'Dr,   )
rA   r!   r(   r*   r   r   rT   r   r   ÚAssertionErrorrÛ   s   @@r-   Útest_smtlib_piecewiserÝ   Õ  sf  ù€ Ü	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜÜ”qœ!˜a™%�jÜ˜A‘v˜t�nó&àØô	
ð
 )ò)ð 	)ñ )÷ 
Dô 
”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜÜ”q˜A‘vœq 1™u�oÜ˜A‘vœq 1™u�oÜ˜A‘vœq 1™u�oÜ˜A‘v˜t�nó&ð Øô
ðò
ð 
	ñ 
÷ 
Dô ”aœ˜Q™�Z¤! q¡&¬!¨a©% ´3´q³6¼1¸q¹5°/ÓB€DÜ	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜŒ~ÔDÔE÷ 
DÐ	C÷/ 
DÑ	Cú÷ 
DÐ	Cú÷ 
DÐ	Cús$   ¬4E;ÂAFÅFÅ;FÆFÆFc                  ó&  — t        t        t        dk  ft        dz  df«      } t        t        j                  t        j
                  g«      5 }t        d| z  |¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j
                  g«      5 }t        | t        z  |¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j                  t        j
                  g«      5 }t        | t        t        z  z  |¬«      dk(  sJ ‚	 d d d «       t        t        j                  t        j
                  g«      5 }t        | dz  |¬«      d	k(  sJ ‚	 d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   ŒÁxY w# 1 sw Y   ŒkxY w# 1 sw Y   y xY w)
Nr’   rC   TrE   z6(declare-const x Real)
(* 2 (ite (< x 1) x (pow x 2)))z?(declare-const x Real)
(* (pow x -1) (ite (< x 1) x (pow x 2)))za(declare-const x Real)
(declare-const y Real)
(* (pow x -1) (pow y -1) (ite (< x 1) x (pow x 2)))rL   z<(declare-const x Real)
(* (/ 1 3) (ite (< x 1) x (pow x 2))))r   rT   rA   r!   r(   r*   r   r^   )Úpwr?   s     r-   Ú!test_smtlib_piecewise_times_constrà   ñ  sE  € Ü	”A”q˜1‘u�:¤ Q¡¨˜~Ó	.€BÜ	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜ˜1˜r™6¨AÔ.Ð2kÒkÐkÑk÷ 
Dä	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜ˜2¤™6¨AÔ.Ð2tÒtÐtÑt÷ 
Dä	”r×-Ñ-¬r×/EÑ/EÄr×GYÑGYÐZÔ	[Ð_`Ü˜2¤¤Q¡™<°!Ô4ð  9^ò  ^ð  	^ñ  ^÷ 
\ä	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜ˜2 ™6¨AÔ.Ð2qÒqÐqÑq÷ 
DÐ	C÷ 
DÑ	Cúç	CÐ	Cúç	[Ð	[úç	CÐ	Cús0   ÁE"ÂE/Ã/!E;ÅFÅ"E,Å/E8Å;FÆFc                  óZ  — t        g «      5 } t        dd| ¬«      dk(  sJ ‚t        d| ¬«      dk(  sJ ‚t        t        j                  | ¬«      dk(  sJ ‚t        t        j                  | ¬«      dk(  sJ ‚t        d| ¬«      dk(  sJ ‚t        dd| ¬«      dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)	NTF)Úauto_assertr<   ÚtruerE   z(assert true)z(assert false)Úfalse)rA   r   r
   rã   rä   rH   s    r-   Útest_smtlib_booleanrå     s¤   € Ü	�bÔ	˜QÜ˜4¨U¸QÔ?À6ÒIÐIÐIÜ˜4¨!Ô,°Ò?Ð?Ð?Üœ1Ÿ6™6¨AÔ.°/ÒAÐAÐAÜœ1Ÿ7™7¨QÔ/Ð3CÒCÐCÐCÜ˜5¨1Ô-Ð1AÒAÐAÐAÜ˜5¨e¸aÔ@ÀGÒKÐKÑK÷ 
×	Ñ	ús   ŒBB!Â!B*c                  óF  ‡ ‡— t        d«      Š t        t        j                  t        j                  g«      5 Št        t        ˆ ˆfd„«       d d d «       t        t        j                  g«      5 Št        t        ˆfd„«       d d d «       y # 1 sw Y   Œ@xY w# 1 sw Y   y xY w)NrÂ   c                  ó‚   •— t         ‰ t        «      j                  t        «      ‰ t        t        gt        f   i‰¬«      S )Nr}   )r   rT   Údiffr   r„   ©rÂ   r?   s   €€r-   rd   z$test_not_supported.<locals>.<lambda>!  s/   ø€ ¤©Q¬q«T¯Y©Y´q«\ÈÌHÔV[ÐU\Ô^cÐUcÑLdÐHeÐpqÕ!rr,   c                  ó:   •— t        t        j                  ‰ ¬«      S rb   )r   r
   ÚComplexInfinityrH   s   €r-   rd   z$test_not_supported.<locals>.<lambda>#  s   ø€ ¤¬Q×->Ñ->ÈÕ!Kr,   )r   rA   r!   r(   r*   r   ÚKeyErrorré   s   @@r-   Útest_not_supportedrí     so   ù€ Ü�‹€AÜ	”r×-Ñ-¬r×/AÑ/AÐBÔ	CÀqÜŒxÔrÔs÷ 
Dä	”r×)Ñ)Ð*Ô	+¨qÜŒxÓKÔL÷ 
,Ð	+÷ 
DÐ	Cúç	+Ð	+ús   ·BÁ.BÂBÂB c                  ód   — t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚y )Ng        z0.0g�e»ºŒ«K<z(* 3.0 (pow 10 -18))g333333@z5.3r   r+   r,   r-   Ú
test_Floatrï   &  s=   € Ü�sÓ˜uÒ$Ð$Ð$ÜÐ+Ó,Ð0FÒFÐFÐFÜ�sÓ˜uÒ$Ð$Ñ$r,   )>Ú
contextlibr5   r%   ÚtypingÚenumr   r   r‚   r   r   r   Ú
sympy.corer   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Úsympy.functionsr   r   r   r   Úsympy.assumptions.askr   Úsympy.printing.smtlibr   Úsympy.testing.pytestr   r   rT   r^   r…   r!   ÚcontextmanagerÚIterablerA   rI   rU   r_   rl   ru   r‡   r—   r™   rÆ   rÔ   r×   rÝ   rà   rå   rí   rï   r+   r,   r-   Ú<module>rú      sð   ðÛ Û Û 	Û Ý Ý ã ß $Ñ $ß ÷8÷ 8÷ 8õ 8ç 4Ó 4Ý #Ý -ß /á
�'Ó
�€€1€aôDˆô Dð ×Ñð/˜6Ÿ?™?¨2Ñ.ò /ó ð/ò"0ò
Nò\ò	Fòeò=2ò@+)ò\MòUòpC1òLI,òpFò8	ròFLòMó%r,   