U
    έ@·f  γ                   @   sΖ   d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZ edd	d
\ZZZdd Zdd Zdd Zdd Zdd Zdd Zedd Zdd Zedd ZdS )ι    )Ϊ
lra_satask)ΪUnhandledInput)ΪQΪask)ΪsymbolsΪSymbol)ΪMatrixSymbol)ΪI)ΪraisesΪXFAILzx y zT©Ϊrealc                      sv  t dddtt td‘t td‘ dks0ttt td‘t td‘ dksTttt td‘ t td‘dksxttt td‘ t td‘dksttt td‘t td‘dksΎttt tt‘dksΦttt tt‘dksξttt td‘t td‘dksttt td‘dd ks.ttt	dd sBttt
fd	d td
dd tt
 fdd d S )NΪimT)Ϊ	imaginaryι   r   Fc                   S   s   t t td‘dS )Nr   F)r   r   ΪgtΪx© r   r   ϊL/tmp/pip-unpacked-wheel-6uje5nh9/sympy/assumptions/tests/test_rel_queries.pyΪ<lambda>   σ    z!test_lra_satask.<locals>.<lambda>c                      s"   t t  t d‘t  t d‘S )Nr   )r   r   r   r	   r   )r   r   r   r   !   r   ΪXι   c                      s   t t  d‘t  d‘@ S ©Nr   ι   ©r   r   Ϊltr   r   ©r   r   r   r   %   r   )r   r   r   Ϊeqr   ΪneΪAssertionErrorr   r
   Ϊ
ValueErrorr   r   r   r   )r   r   r   Ϊtest_lra_satask   s    $$$$"$r"   c                      s  t d tt fdd t dddd tt fdd t dddd tt fd	d t dddd
 tt fdd t dddd tt fdd t dddd tt fdd t dddd tt fdd t dddd tt fdd t dddd tt  d‘dks"ttt  d‘dks<tt dddd tt  d‘dksdttt 	 d‘dks~tt dddd tt 
 d‘dks¦ttt  d‘dksΐtt dddd tt  d‘dksθttt 
 d‘d kstt dddd tt  d‘dks*ttt  d‘dksDtt dddd tt 	 d‘dkslttt  d‘dkstd S )NΪwc                      s   t t  d‘t  d‘@ S r   r   r   ©r#   r   r   r   +   r   z&test_old_assumptions.<locals>.<lambda>FT)Zrationalr   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   -   r   )Ϊoddr   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   /   r   )Ϊevenr   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   1   r   )Ϊprimer   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   3   r   )Ϊ	compositer   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   5   r   )Ϊintegerr   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   7   r   c                      s   t t  d‘t  d‘@ S r   r   r   r$   r   r   r   9   r   )Ϊpositiver   r   )Ϊnegativer   )Ϊzeror   )Znonzeror   r   )Ϊnonpositiver   )Znonnegativer   )r   r
   r   r   r   Ϊler    r   r   Ϊger   r   r   r   r$   r   Ϊtest_old_assumptions(   sD    r0   c                   C   s   t t td‘t td‘@ dks$tt t tt ‘ttkttk@ dksLtt tt dktdk tdk @ dksrtt ttkttkttk@ dkstd S )Nr   r   FTr   )	r   r   r   r   r   r    r*   ΪzΪyr   r   r   r   Ϊtest_rel_queriesP   s    $(&r3   c                  C   s4   t ddd} tt | d‘t | d‘@ d ks0td S )Nr   r   r   )r   r   r   r   r   r    r   r   r   r   Ϊtest_unhandled_queriesW   s    r4   c                   C   s   t t t‘tdkdkstt t t‘dks2tt t t‘dksHtttdd  ttdd  ttdd  ttdd  ttd	d  d S )
Nr   TFc                   S   s   t tdktdkt t‘@ S ©Nr   r   )r   r   r   r'   r   r   r   r   r   c   r   ztest_all_pred.<locals>.<lambda>c                   S   s   t tdktdkt t‘@ S r5   )r   r   r   r(   r   r   r   r   r   d   r   c                   S   s   t tdktdkt t‘@ S r5   )r   r   r   r%   r   r   r   r   r   e   r   c                   S   s   t tdktdkt t‘@ S r5   )r   r   r   r&   r   r   r   r   r   f   r   c                   S   s   t tdktdkt t‘@ S r5   )r   r   r   r)   r   r   r   r   r   g   r   )	r   r   Zextended_positiver   r    Zpositive_infiniteZnegative_infiniter
   r   r   r   r   r   Ϊtest_all_pred\   s    r6   c                  C   sΐ   t ddd\} }}t| |k| |k||k@ dks4tt| |k | |k||k @ dksVtt| |k | |k ||k@ dksxtt| | || k| |kdkstt| | || k| |kdksΌtd S )Nϊa b cTr   )r   r   r    ©ΪaΪbΪcr   r   r   Ϊtest_number_line_propertiesj   s    """"r<   c                  C   s~  t ddd\} }}t| | || k| |k|dk@ t |‘ @ dksHtt| | || k| |k|dk@ t |‘ @ dks~tt| | || k| |k|dk @ t |‘ @ dks΄tt| | || k| |k|dk @ t |‘ @ dksκtt|  | k| |kdks
ttd|  d| k| |kt t‘@ t |‘@ dksBttd|  d| k| |kt t‘@ t |‘@ dksztd S )Nr7   Tr   r   r   )r   r   r   r,   r    r*   r   r+   r8   r   r   r   Ϊ#test_failing_number_line_properties~   s    6666 8r=   c                   C   s   t t tt‘dkstt t tt‘t tt‘dks:tt t tt‘t tt‘ t tt‘B dksjtt t tt‘t tt‘t tt‘@ dkstd S ©NT)r   r   r   r   r    r2   r1   r   r   r   r   Ϊtest_equality   s    "0r?   c                   C   s   t t t‘t tt‘t t‘@ dks*tt t t‘t tt‘t t‘@ dksTtt t t‘t tt‘t t‘@ dks~td S r>   )	r   r   r'   r   r   r2   r    r   r   r   r   r   r   Ϊtest_equality_failing’   s    **r@   N)Zsympy.assumptions.lra_sataskr   Z!sympy.logic.algorithms.lra_theoryr   Zsympy.assumptions.askr   r   Z
sympy.corer   r   Z"sympy.matrices.expressions.matexprr   Zsympy.core.numbersr	   Zsympy.testing.pytestr
   r   r   r2   r1   r"   r0   r3   r4   r6   r<   r=   r?   r@   r   r   r   r   Ϊ<module>   s$   (

