
    RieQ                        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#m$Z$  ed
          \  Z%Z&Z' G d de          Z(e j)        dej*        e(         fd            Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8dS )    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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dS )_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     @lib/python3.11/site-packages/sympy/printing/tests/test_smtlib.pyr    r       sX        $"*%Y[][_``!rz"RTVTXYY bj!suwuyzzOOOr+   r    expectedc           	   #   n  K   g }|j         }|V  g }t          t          j        ||                     D ]\\  }\  }}|s|d| d| dgz  }|s|d| d|j         dgz  }-|j                            |          s|d| d| d|j         dgz  }]|r"t          d                    |                    d S )	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_warnsr@      s      E|H
NNNFy4UHEEFF Q Q	6Aq 	QB1BBQBBBCCFF 	QL1LL!&LLLMMFFq!! 	QO1OOOOafOOOPPF.VDIIf--.....r+   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            n# 1 swxY w Y   t          g           5 } t          t	          d                    dk    sJ t          t	          d                    dk    sJ 	 d d d            d S # 1 swxY w Y   d S )N   C   r;   67z-1)r@   r    r)   r   r   r>   s    r,   test_IntegerrH   ,   sj   	r)*Q.	/	/ <172;;333t;;;;72;;333t;;;;;< < < < < < < < < < < < < < < 
b		 0Q72;;''4////72;;''4/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s%   A	A44A8;A8AC!!C%(C%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            n# 1 swxY w Y   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            d S # 1 swxY w Y   d S )N         rD   z(/ 3 7)   	   2iz(/ -3 7)rB   Fauto_declarer;   z(+ (/ 3 7) x)z$(declare-const x Real)
(* (/ 3 7) x))r@   r    r)   r   r   r'   xrG   s    r,   test_RationalrT   5   s   	r)*Q.	/	/ F18Aq>>A666)CCCC8B??Q7773>>>>8Ar??Q777:EEEE8B++a888IEEEEE	F F F F F F F F F F F F F F F 
r-r/ABQF	G	G N11x1~~-EANNNRaaaaa8Aq>>A-::: ?N N N N N NN N N N N N N N N N N N N N N N N Ns%   BC  CC3AEE!$E!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            d S # 1 swxY w Y   d S )
N   FrQ   z(assert (= x y))z(assert (not (= x y)))z(assert (<= x y))z(assert (< x y))z(assert (> x y))z(assert (>= x y)))r@   r    r'   r   r   rS   yr   r   r   r   r   rG   s    r,   test_RelationalrX   B   s   	r-.3	4	4 \2a88%!DDDHZZZZZ2a88%!DDDH`````2a88%!DDDH[[[[[2a88%!DDDHZZZZZ2a88%!DDDHZZZZZ2a88%!DDDH[[[[[[\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \s   D!EEEc            	      v   t          t          j        t          j        g          5 } t	          t          t                    t          t                    z  d|           dk    sJ 	 d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   t          d          }t          t          j        g          5 } t	           |t                    |t          t          gt           f         i| 	          d
k    sJ 	 d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   t          t          j        gdz            5 } t	          t#           |t          t$                    t                    |dt"          di|           dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NFrQ   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r\   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==)r\   r^   r;   zf(declare-const x Int)
(declare-const y Bool)
(declare-const z Bool)
(assert (== (MY_KNOWN_FUN x z) y))rK   )r^   r;   zg(declare-const x Real)
(declare-const y Real)
(declare-const z Real)
(assert (== (MY_KNOWN_FUN x z) y)))r@   r    r'   r)   r   r   rS   r   absintrW   boolsympyAbsr   r   floatr   z)r>   my_fun1s     r,   test_Functionrj   L   s   	r-r/AB	C	C hq3q66SVV+%!LLLPggggggh h h h h h h h h h h h h h h 
r)*	+	+ %qFFS!T*n-"Y(;<
 
 
%% % % % %% % % % % % % % % % % % % % % tnnG	r)*	+	+ qGAJJ!8TFEM#:;
 
 
	                   
b		 2QGAJJ!8TFDL#9:
 
 
	    wwq!}}a  !8S$K,=#>?
 
 
'	' ' ' ' wwq!}}a  !8S$K,=#>?$nb$?	
 
 

22 2 2 2 2'2 2 2 2 2 2 2 2 2 2 2 2 2 2 2: 
r-.2	3	3 2qwwq!}}a  $nb$?
 
 
2	2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s^   A A33A7:A7AC==DD1AE??FFD	J//J36J3A	L..L25L2c                  H   t          t          j        t          j        g          5 } t	          t
          dz  d|           dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        t          j        t          j        g          5 } t	          t
          t          dz  z  d|           dk    sJ 	 d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   t          g           5 } t	          t          |dk     |          t          ||k    |          |d	z  t          |dt          dd          z             g|           dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        t          j        g          5 } t	          t          d|t          t          ||d          dd          d          |           dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NrK   FrQ   z	(pow x 3)z(pow x (pow y 3))rB   z(pow x (/ 2 3))aTintegerbrealcc                     d| z  S )NrB   r*   )rS   s    r,   gztest_Pow.<locals>.g   s
    Q,r+      g      @rD   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. a) (+ (pow b a) (* -1 a))) (pow (+ b (pow a 2)) -1)) (/ 7 3)))evaluaterF   zG(declare-const b Real)
(declare-const c Real)
(* -2 c (pow (* b b) -1)))r@   r    r'   r)   r   rS   rW   r   r   r   r   r	   )r>   rl   ro   rr   rt   exprs         r,   test_Powrz      s   	r-r/AB	C	C Rq16BBBkQQQQQR R R R R R R R R R R R R R R	r-r/ErGYZ	[	[ a_`1a=uqIIIM``````a a a a a a a a a a a a a a a	r-r/AB	C	C 
?q1A.UQOOOSddddd3%%%3T"""3KK AAaDD3JAQJ//16A:>
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
b		 Q1q5!1q5!D4Xa^^+,,	 
 
 
	                  ( 
r-r/AB	C	C )qAs3q!e444b5IIITYZZZ
 
 
)) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s\   !AAA)CC	C	5BFFF!A"HHH A	JJJc                  x   t          t          j        t          j        t          j        g          5 } t	          t
          t          z  d|           dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        t          j        t          j        g          5 } t	          t
          t          z   d|           dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        t          j        g          5 } t	          t
           d|           dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NFrQ   z(* x y)z(+ x y)z(* -1 x))r@   r    r'   r)   r   rS   rW   rG   s    r,   test_basic_opsr|      s   	r-r/ErGYZ	[	[ O_`1q5uqAAAYNNNNNO O O O O O O O O O O O O O O 
r-r/ErGYZ	[	[ O_`1q5uqAAAYNNNNNO O O O O O O O O O O O O O O 
r-r/AB	C	C MqA2EA>>>*LLLLLM M M M M M M M M M M M M M M M M Ms5   &A$$A(+A(&CCCD//D36D3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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            d S # 1 swxY w Y   d S )Nr   )Boolean)IntervalTuplesympifyc                   V    e Zd ZfdZed             Zed             Z fdZdS )*test_quantifier_extensions.<locals>.ForAllc                     fd| j         D             }                    d                    d|          | j        g          S )Nc           
          g | ]C\  }}}                     |j        j        j        |                   ||          g          DS r*   )_s_exprr6   _known_typesr\   ).0symstartendr   printers       r,   
<listcomp>zFtest_quantifier_extensions.<locals>.ForAll._smtlib.<locals>.<listcomp>   sj     ) ) ) 'sE3 ()=c)BCHUC((+  ) ) )r+   forall )limitsr   function)selfr   bound_symbol_declarationsr   s    ` r,   _smtlibz2test_quantifier_extensions.<locals>.ForAll._smtlib   sl    ) ) ) ) ) +/+	) ) )% ??8$=>>.   r+   c                 $    d | j         D             S )Nc                     h | ]\  }}}|	S r*   r*   )r   s_s      r,   	<setcomp>zKtest_quantifier_extensions.<locals>.ForAll.bound_symbols.<locals>.<setcomp>   s    111'!QA111r+   )r   )r   s    r,   bound_symbolsz8test_quantifier_extensions.<locals>.ForAll.bound_symbols   s    11T[1111r+   c                 V    d | j         D             fd| j        j        D             S )Nc                     h | ]	}|j         
S r*   r6   )r   r   s     r,   r   zJtest_quantifier_extensions.<locals>.ForAll.free_symbols.<locals>.<setcomp>   s    !E!E!EQ!&!E!E!Er+   c                 &    h | ]}|j         v|S r*   r   )r   r   bound_symbol_namess     r,   r   zJtest_quantifier_extensions.<locals>.ForAll.free_symbols.<locals>.<setcomp>   s1       6!333 333r+   )r   r   free_symbols)r   r   s    @r,   r   z7test_quantifier_extensions.<locals>.ForAll.free_symbols   sJ    !E!E$2D!E!E!E   =5   r+   c                    fd|D             }fd|D             }t          |          t          |          z   t          |          k    sJ t          |          dk    sJ |d         }t          |          r j        g||j        z   |j        R  S                     |           }t          ||gz             |_        ||_        ||_        |S )Nc                 p    g | ]2}t          |t                    st          |          ' |          3S r*   )
isinstancetuple)r   rl   r   r   s     r,   r   zFtest_quantifier_extensions.<locals>.ForAll.__new__.<locals>.<listcomp>   sA    ___Q*Q2F2F_*UVX]J^J^_ggajj___r+   c                 F    g | ]}t          |           |          S r*   )r   )r   rl   r~   r   s     r,   r   zFtest_quantifier_extensions.<locals>.ForAll.__new__.<locals>.<listcomp>   s0    KKKqJq'4J4JK

KKKr+   ru   r   )lenr   __new__r   r   r   _args)	clsargsr   r   instr~   ForAllr   r   s	        r,   r   z2test_quantifier_extensions.<locals>.ForAll.__new__   s   _____$___FKKKKKDKKKHv;;X.#d));;;;x==A%%%%{H(F++ NFN5 8?255=5F5 5 5 . ??3''Dv
233DJ DK$DMKr+   N)r!   r"   r#   r   propertyr   r   r   )r~   r   r   r   r   s   r,   r   r      s        
	 
	 
	 
	 
	 
	2 	2 
	2 
	 	 
		 	 	 	 	 	 	 	 	 	r+   r   fi   r`   z,(assert (forall ( (x Real [-42, 21])) true))rB   irK   zs(declare-fun f (Real) Real)
(assert (forall ( (x Real [-42, 21]) (y Real [-100, 3])) (=> (= x y) (= (f x) (f y)))))rl   Trm   ro   rp   rr   d   rD   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~   re   r   r   r   r   r@   r    r'   r   rS   r   r   rg   rW   r   r   r   )
r   r>   rl   ro   rr   r~   r   r   r   r   s
        @@@@@r,   test_quantifier_extensionsr      s   ++++++..........' ' ' ' ' ' ' ' ' ' ' ' ' 'V 	A	r-.	/	/ <1FAsC="QQqTT11Q44..11Xugun56
 
 
 <	< < < < << < < < < < < < < < < < < < < 
r-.2	3	3 qFC4|1a"QQqTT11Q44..11  Xugun56
 
 
                   	sD!!!AsAsA	b		 QFAsVV3KAE477Q;//!3  
 
 
 

 
 
 
 
                 s9   A/CCC7BF""F&)F&-AIIIc                     t          t          j        g          5 } t          dt          z  t          di|           dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        g          5 } t          t          t          dd          dt          z  gt          di|           dk    sJ 	 d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            d S # 1 swxY w Y   d S )Nru   MY_PI)known_constantsr;   z(pow MY_PI -1)gQ	@Frw   z&(assert (= MY_PI 3.14))
(pow MY_PI -1)prt   r?   plusr   rK   )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))r@   r    r)   r   r   r   r   r
   ZeroOneNegativeOneHalfExp1PiGoldenRatior   rG   s    r,   test_mix_number_mult_symbolsr   !  s   	r)*	+	+ qFM
 
 
 	                   
r)*	+	+ 	q2te,,,B  M
 
 
    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
r)*	+	+ 1qq}afame= = = c1=#
 VU 
 
 
 11 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1  
r)*	+	+ 4qq}afame= = = c VU 
 
 
 44 4 4 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
r)*	+	+ 4qq}afame= = = &M
 
 
 44 4 4 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
r)*	+	+ 1qq}afame= = =VSM &M
 
 
 11 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1so   (AAA5?CCC&B(FF"F BII!$I!A<LLL0B	OOO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            n# 1 swxY w Y   t          t
          j        g          5 } t          t          t           z  t          dk    z  |           dk    sJ 	 d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   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            n# 1 swxY w Y   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            d S # 1 swxY w Y   d S )NrD   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))rK   zj(declare-const x Bool)
(declare-const y Bool)
(declare-const z Real)
(assert (or (> z 3) (and x (not y))))r   rt   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)))r@   r   rS   rW   rh   r    r'   r   r   r   r   rd   rc   r   rg   )r>   r   rt   r   s       r,   test_booleanr   g  s)   	b		 LQ1q51--- 2F F F F F 1q51--- 2E E E E E A2*** /A A A A A1q519q111 6L L L L L LL L L L L L L L L L L L L L L 
r-.	/	/ f1AFq1u-::: ?f f f f f ff f f f f f f f f f f f f f f 	AAA	r-.	/	/ $1!a[[11Q44[[ 8TFCK(!Xtfck-B
 
 
$$ $ $ $ $$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
b		 $Q!a[[11Q44[[ 8TFCK(!Xtfck-B
 
 
$$ $ $ $ $$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
b		 ,Q!a[[!!A$$^^!!AAaDD''

A  8UGSL)8SE4K(8TFEM*
 

 

 

,, , , , ,, , , , , , , , , , , , , , , , , ,s]   BB//B36B32DDD%BHH
HBJ;;J?J?C(OOO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            n# 1 swxY w Y   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            n# 1 swxY w Y   t          t          t          dk     ft          dz  t          dk    ft          t                    t          dk    f           t          t          j        t          j        g          5 t          t           fd           d d d            d S # 1 swxY w Y   d S )Nru   rB   TFrQ   z(ite (< x 1) x (pow x 2))rK   rJ      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 NrD   r   ry   r>   s   r,   <lambda>z'test_smtlib_piecewise.<locals>.<lambda>  s    {4!'D'D'D r+   )
r@   r    r'   r)   r   r   rS   r   r   AssertionErrorr   s   @@r,   test_smtlib_piecewiser     s   	r-r/AB	C	C )qq!a%jAvtn& &	
 
 

 )) ) ) ) )) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
r-r/AB	C	C qqAvq1uoAvq1uoAvq1uoAvtn& & 
 
 

 
 
 
 
               aQZ!q&!a%3q661q5/BBD	r-r/AB	C	C Fq~DDDDDEEEF F F F F F F F F F F F F F F F F Fs7   AA66A:=A:&A,DD#&D# GGGc                  V   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            n# 1 swxY w Y   t          t          j        t          j        g          5 }t          | t          z  |          dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        t          j        t          j        g          5 }t          | t          t          z  z  |          dk    sJ 	 d d d            n# 1 swxY w Y   t          t          j        t          j        g          5 }t          | dz  |          d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nru   rB   TrD   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)))rK   z<(declare-const x Real)
(* (/ 1 3) (ite (< x 1) x (pow x 2))))r   rS   r@   r    r'   r)   r   rW   )pwr>   s     r,   !test_smtlib_piecewise_times_constr     s   	Aq1u:Q~	.	.B	r-r/AB	C	C lq1r6A...2kkkkkkl l l l l l l l l l l l l l l	r-r/AB	C	C uq26A...2ttttttu u u u u u u u u u u u u u u	r-r/ErGYZ	[	[ ^_`2Q<!444  9^  ^  ^  ^  ^  ^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^	r-r/AB	C	C rq26A...2qqqqqqr r r r r r r r r r r r r r r r r rsH   A88A<?A<( CCC(EE	E	5FF"%F"c                     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            d S # 1 swxY w Y   d S )	NTF)auto_assertr;   truerD   z(assert true)z(assert false)false)r@   r   r
   r   r   rG   s    r,   test_smtlib_booleanr     sE   	b		 LQ4UQ???6IIII4!,,,????16A.../AAAA17Q///3CCCCC51---1AAAAA5ea@@@GKKKKKL L L L L L L L L L L L L L L L L Ls   B!B??CCc                  j    t          d           t          t          j        t          j        g          5 t          t           fd           d d d            n# 1 swxY w Y   t          t          j        g          5 t          t          fd           d d d            d S # 1 swxY w Y   d S )Nr   c                      t            t                                        t                     t          t          gt          f         i          S )Nr`   )r   rS   diffr   rg   r   r>   s   r,   r   z$test_not_supported.<locals>.<lambda>  s=    QQqTTYYq\\HV[U\^cUcLdHepq!r!r!r r+   c                  :    t          t          j                   S r   )r   r
   ComplexInfinityrG   s   r,   r   z$test_not_supported.<locals>.<lambda>  s    Q->!K!K!K r+   )r   r@   r    r'   r)   r   KeyErrorr   s   @@r,   test_not_supportedr     sI   A	r-r/AB	C	C tqxrrrrrssst t t t t t t t t t t t t t t	r)*	+	+ MqxKKKKLLLM M M M M M M M M M M M M M M M M Ms#   AA!$A!B((B,/B,)9
contextlibr4   r$   typingenumr   r   re   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.printing.smtlibr   sympy.testing.pytestr   r   rS   rW   rh   r    contextmanagerIterabler@   rH   rT   rX   rj   rz   r|   r   r   r   r   r   r   r   r*   r+   r,   <module>r      s           				               $ $ $ $ $ $ $ $ $ $        8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 4 4 4 4 4 4 4 4 4 4 4 4 - - - - - - / / / / / / / /
''

1a{ { { { { { { { /6?2. / / / /"0 0 0
N 
N 
N\ \ \=2 =2 =2@+) +) +)\M M MU U UpC1 C1 C1LI, I, I,pF F F8	r 	r 	rFL L LM M M M Mr+   