
    sgW                        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IDEFAULTING_TO_FLOATWILL_NOT_DECLAREWILL_NOT_ASSERT     S/var/www/html/venv/lib/python3.12/site-packages/sympy/printing/tests/test_smtlib.pyr!   r!      sR    $"**%Y[][_[_`!rzz"RTVTXTXY bjj!suwuyuyzOr,   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4UHEF Q	6Aq1#<QCrBCCF1#A!&&LMMFq!1#[+EaffXQOPPFQ VDIIf-..vs   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<   67z-1)rA   r!   r*   r   r   r?   s    r-   test_IntegerrI   -   s    	r))*Q.	/ <172;3t;;;72;3t;;;< 
b	 0Q72;'4///72;'4///0 0< <0 0s   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)   	   2iz(/ -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   s1   	r))*Q.	/ F18Aq>A6)CCC8B?Q73>>>8Ar?Q7:EEE8B+a8IEEE	F 
r--r/A/ABQF	G N11x1~-EANRaaaa8Aq>A-: ?N N 	N NN NF FN N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 \2a8%!DHZZZZ2a8%!DH````2a8%!DH[[[[2a8%!DHZZZZ2a8%!DHZZZZ2a8%!DH[[[[\ \ \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    {199Q<!D r,   )rA   r!   r(   r   r   eqrT   r^   neltlegtger   
ValueErrorrH   s   @r-   test_AppliedBinaryRelationrl   M   s   	r--.3	4 ^1441:EAFJ\\\\1441:EAFJbbbb1441:EAFJ\\\\1441:EAFJ]]]]1441:EAFJ\\\\1441:EAFJ]]]]^ :DE^ ^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 eq1::a=uqIM____1::a=uqIM____166!951EI[[[[1==+%!LPcccc1==+%!LPcccc199Q<eaHLdddde e e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   s   	r--r/A/AB	C hq3q6SV+%!LPggggh 
r))*	+ %qFS!T*n-"YY(;<
%% 	% %% tnG	r))*	+ qAJ!8TFEM#:;
	 	  
b	 2QAJ!8TFDL#9:
	 	  wq!}a !8S$K,=#>?
'	' 	' ' wq!}a !8S$K,=#>?$nb$?	

22 	2 2'2: 
r--.2	3 2qwq!}a $nb$?
2	2 	2 22 2ih h% % 2 2:2 2s=   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      sH   	r--r/A/AB	C Rq16BkQQQR	r--r/E/ErGYGYZ	[ a_`1a=uqIM````a	r--r/A/AB	C 
?q1A.UQOSdddd3%3T"3K AaD3JAQJ//16A:>
? 
b	 Q1q5!1q5!D4Xa^+,	 
	 	 ( 
r--r/A/AB	C )qAs3q!e4b5ITYZ
)) 	) )) )IR Ra a
? 
? () )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/ErGYGYZ	[ O_`1q5uqAYNNNO 
r--r/E/ErGYGYZ	[ O_`1q5uqAYNNNO 
r--r/A/AB	C MqA2EA>*LLLM MO OO OM M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    
 +/++	) ) 'sE3 (()=)=c)BCUC(+ )% ) ??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   s]    262D2D!EQ!&&!E!E==5566!33   "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    *.PQ*Q2OgajPFP,0KqJq'4J
KHKv;X.#d);;;x=A%%%{H(F+NFNN5 8??255=5F5F5 . ??3'Dv
23DJ DK$DM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   irL   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AsC="QqT1Q4.1Xugun56
 <	< 	< << 
r--.2	3 qC4|1a"QqT1Q4.1 Xugun56
 	  	sD!AsAsA	b	 QAsV3KAE47Q;/!3
 

 
	 
 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2te,B  M
 	 	 
r))*	+ 1qq}}affamme= c1==#
 VU 
 11 	1 11  
r))*	+ 4qq}}affamme= c VU 
 44 	4 44 
r))*	+ 4qq}}affamme= &M
 44 	4 44 
r))*	+ 1qq}}affamme=VVSM &M
 11 	1 11 1u 	 	1 1 4 44 41 1sK   !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	 LQ1q51- 2F F 	F F 1q51- 2E E 	E E A2* /A A 	A A1q519q1 6L L 	L LL 
r--.	/ f1AFq1u-: ?f f 	f ff 	AAA	r--.	/ $1!a[1Q4[ 8TFCK(!Xtfck-B
$$ 	$ $$ 
b	 $Q!a[1Q4[ 8TFCK(!Xtfck-B
$$ 	$ $$ 
b	 ,Q!a[!A$^!AaD'
A  8UGSL)8SE4K(8TFEM*
 

,, 	, ,, ,kL Lf f$ $$ $, ,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!'D r,   )
rA   r!   r(   r*   r   r   rT   r   r   AssertionErrorr   s   @@r-   test_smtlib_piecewiser     s|   	r--r/A/AB	C )qq!a%jAvtn&	

 )) 	) )) 
r--r/A/AB	C qqAvq1uoAvq1uoAvq1uoAvtn& 

 
	 
 aQZ!q&!a%3q61q5/BD	r--r/A/AB	C Fq~DEF F/) ) F F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     su   	Aq1u:Q~	.B	r--r/A/AB	C lq1r6A.2kkkkl	r--r/A/AB	C uq26A.2ttttu	r--r/E/ErGYGYZ	[ ^_`2Q<!4  9^  ^  	^  ^^	r--r/A/AB	C rq26A.2qqqqr rl lu u^ ^r r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	 LQ4UQ?6III4!,???166A./AAA177Q/3CCCC51-1AAAA5ea@GKKKL L L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>!  s1    QqTYYq\HV[U\^cUcLdHepq!r r,   c                  :    t        t        j                         S rb   )r   r
   ComplexInfinityrH   s   r-   rd   z$test_not_supported.<locals>.<lambda>#  s    Q->->!K r,   )r   rA   r!   r(   r*   r   KeyErrorr   s   @@r-   test_not_supportedr     s    A	r--r/A/AB	C tqxrst	r))*	+ MqxKLM Mt tM M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.0geK<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 # - /
'
1a{ { /6??2. / /"0
N\	Fe=2@+)\MUpC1LI,pF8	rFLM%r,   