o
    *ήc+                     @   s   d dl mZ 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 d d	lmZmZ G d
d deZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    )Expr)Integer)S)Symbolsymbols)AssocOp	LatticeOp)raises)SympifyError)Addadd)Mulmulc                   @   s   e Zd ZedZedZdS )joinr      N)__name__
__module____qualname__r   zeroidentity r   r   G/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_operations.pyr      s    r   c                   C   s   t t dddt dt ddksJ t ddt ddksJ t dddks'J t dddks0J t dddks9J t t dddt dddksIJ t  dksPJ t ddksXJ t dddddddt dddksjJ d S )N         r   r   )r   r   r   r   r   test_lattice_simple   s   $ (r   c                   C   s$   t tdd  tdtdksJ d S )Nc                   S   s   t tS N)r   objectr   r   r   r   <lambda>!   s    z+test_lattice_shortcircuit.<locals>.<lambda>r   )r	   r
   r   r   r   r   r   r   test_lattice_shortcircuit    s   r   c                   C   s   t tdddddksJ d S )N   r   r   r   zjoin(2, 3, 4, 5))strr   r   r   r   r   test_lattice_print%   s   r"   c                   C   sx   t t dddtdtdtdhksJ t ddhks J tt dd tju s.J tdd tju s:J d S )Nr   r   r   r   )r   	make_argsr   listZeror   r   r   r   r   test_lattice_make_args)   s   ,r&   c                  C   sx   t ddd\} }}}t| |||| dksJ t| |||| dks(J t| ||||| | dks:J d S )Na,b,c,dF)commutativeT)r   r   has)abcdr   r   r   test_issue_140250   s   (r.   c                  C   s   t d\} }}}G dd dt}|| |||j||| ||j  krB||| ||j  krB|| ||j  krB| ||fksEJ  J |||}|||dd}|j||fksZJ || |j| |||fkshJ d S )Nr'   c                   @   s   e Zd ZejZdS )z%test_AssocOp_flatten.<locals>.MyAssocN)r   r   r   r   Oner   r   r   r   r   MyAssoc:   s    
r0   F)evaluate)r   r   args)r*   r+   r,   r-   r0   uvr   r   r   test_AssocOp_flatten7   s   
 r5   c                     s   G  fdddt } G dd d| t tt f  td|  }}tddtddks/J t||t||ks;J t||| d| |ksJJ d S )Nc                          e Zd Ze fddZdS )z$test_add_dispatcher.<locals>.NewBasec                        S r   r   selfNewAddr   r   _add_handlerL      z1test_add_dispatcher.<locals>.NewBase._add_handlerN)r   r   r   propertyr<   r   r:   r   r   NewBaseK       r?   c                   @      e Zd ZdS )z#test_add_dispatcher.<locals>.NewAddNr   r   r   r   r   r   r   r;   O       r;   r*   r   r   )r   r   r   register_handlerclassr   r?   r*   r+   r   r:   r   test_add_dispatcherI      "rF   c                     s   G  fdddt } G dd d| t tt f  td|  }}tddtddks/J t||t||ks;J t||| |d |ksJJ d S )Nc                       r6   )z$test_mul_dispatcher.<locals>.NewBasec                    r7   r   r   r8   NewMulr   r   _mul_handler`   r=   z1test_mul_dispatcher.<locals>.NewBase._mul_handlerN)r   r   r   r>   rJ   r   rH   r   r   r?   _   r@   r?   c                   @   rA   )z#test_mul_dispatcher.<locals>.NewMulNrB   r   r   r   r   rI   c   rC   rI   r*   r   r   )r   r   r   rD   r   rE   r   rH   r   test_mul_dispatcher]   rG   rK   N)sympy.core.exprr   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.operationsr   r   sympy.testing.pytestr	   sympy.core.sympifyr
   sympy.core.addr   r   sympy.core.mulr   r   r   r   r   r"   r&   r.   r5   rF   rK   r   r   r   r   <module>   s$    