
    gW                        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 j+        dej,        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=d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)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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     \/var/www/html/ai-engine/env/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_warnsrA      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)rA   r!   r*   r   r   r?   s    r-   test_IntegerrI   -   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         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   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   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	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                       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            n# 1 swxY w Y   t          t           fd
           d S )NrW   FrR   rX   rY   r[   rZ   r\   r]   c                  T    t          t          j        t                               S NrE   )r   r   complexrT   rH   s   r-   <lambda>z,test_AppliedBinaryRelation.<locals>.<lambda>V   s    {19Q<<!DDD r,   )rA   r!   r(   r   r   eqrT   r^   neltlegtger   
ValueErrorrH   s   @r-   test_AppliedBinaryRelationrl   M   s   	r-.3	4	4 ^141::EAFFFJ\\\\\141::EAFFFJbbbbb141::EAFFFJ\\\\\141::EAFFFJ]]]]]141::EAFFFJ\\\\\141::EAFFFJ]]]]]]^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ :DDDDEEEEEs   D?E++E/2E/c                     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            d S # 1 swxY w Y   d S )
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	3 eq1:a==uqIIIM_____1:a==uqIIIM_____16!9951EEEI[[[[[1=++%!LLLPccccc1=++%!LLLPccccc19Q<<eaHHHLdddddde e e e e e e e e e e e e e e e e e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 )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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 )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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 )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/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_exprr7   _known_typesry   ).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+   r7   )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                 T    g | ]$}t          |t          f           |          %S r+   )
isinstancetuple)r   r   r   r   s     r-   r   zFtest_quantifier_extensions.<locals>.ForAll.__new__.<locals>.<listcomp>   s4    PPPQ*Q2O2OPggajjPPPr,   c                 F    g | ]}t          |           |          S r+   )r   )r   r   r   r   s     r-   r   zFtest_quantifier_extensions.<locals>.ForAll.__new__.<locals>.<listcomp>   s0    KKKqJq'4J4JK

KKKr,   r   r   )lenr   __new__r   r   r   _args)	clsargsr   r   instr   ForAllr   r   s	        r-   r   z2test_quantifier_extensions.<locals>.ForAll.__new__   s   PPPPP$PPPF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))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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 )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}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 )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 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 )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'D'D r,   )
rA   r!   r(   r*   r   r   rT   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 )
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     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<   truerE   z(assert true)z(assert false)false)rA   r   r
   r   r   rH   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   rT   diffr   r   r   r?   s   r-   rd   z$test_not_supported.<locals>.<lambda>!  s=    QQqTTYYq\\HV[U\^cUcLdHepq!r!r!r r,   c                  :    t          t          j                   S rb   )r   r
   ComplexInfinityrH   s   r-   rd   z$test_not_supported.<locals>.<lambda>#  s    Q->!K!K!K r,   )r   rA   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,c                      t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ d S )Ng        z0.0geK<z(* 3.0 (pow 10 -18))g333333@z5.3r   r+   r,   r-   
test_Floatr   &  sU    su$$$$+,,0FF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 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\ \ \	F 	F 	Fe e e=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% % % % %r,   