
    g"                         d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ 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mZ d
 Zd Zd Zd Zd Zd Z G d de          Z d Z!d Z"d Z#d Z$dS )    )top_down	bottom_upsalltop_down_oncebottom_up_once	basic_fns)rebuild)expr_fns)Add)Basic)Integer)S)StrSymbol)xyzc                 H    t          | t                    rt          j        n| S N)
isinstancer   r   Zero)
expressions    `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/strategies/tests/test_traverse.pyzero_symbolsr      s    
F33C166C    c            
      4   t          t                    }  | t          t          t          t          t          t
                                        t          t          d          t          d          t          t          t
                              k    sJ d S Nr   )r   r   r   r   r   r   r   )zero_onelevels    r   	test_sallr      sq    &&M=q!U1a[[1122addAaDD%1++&&' ' ' ' ' 'r   c                  V    t          t                     t          t                     d S r   )_test_global_traversalr   _test_stop_on_non_basics r   r   test_bottom_upr$      s$    9%%%Y'''''r   c                  V    t          t                     t          t                     d S r   )r!   r   r"   r#   r   r   test_top_downr&      s$    8$$$X&&&&&r   c                 L    | t                     } |t          t          t          t          t          t                                        t          t          d          t          d          t          t          d          t          d                              k    sJ d S r   )r   r   r   r   r   r   )travzero_all_symbolss     r   r!   r!   "   s    tL))E!Qa4455addAaDD%!add++,,- - - - - -r   c           
         d }t          t          d          t          d          t          t          d          t          d                              }t          t          d          t          d          t          t          d          t          d                              } | |          } ||          |k    sJ d S )Nc                 2    	 | dz   S # t           $ r | cY S w xY wN   )	TypeError)exprs    r   add_one_if_canz0_test_stop_on_non_basics.<locals>.add_one_if_can*   s4    	!8O 	 	 	KKK	s    r-   a   b   )r   r   r   )r(   r0   r/   expectedrls        r   r"   r"   )   s       1s3xxqttSXX!6!677DQqTT3s88U1Q44S%:%:;;H	n		B2d88xr   c                       e Zd ZdS )Basic2N)__name__
__module____qualname__r#   r   r   r8   r8   7   s        Dr   r8   c                 p    | j         r.t          | j         d         t                    st          | j          S | S r   )argsr   r   r8   )r   s    r   r6   r6   ;   s4    v jG44 qvHr   c                     t          t                    }  | t          t          d          t          d          t          t          d          t          d                                        t	          t          d          t          d          t          t          d          t          d                              k    sJ d S )Ng      ?g       @r4      )r   r6   r   r   r8   )top_rls    r   test_top_down_oncerA   A   s    2F6%##addAaDD(9(9::;;qvvqvvuQqTT1Q4400112 2 2 2 2 2r   c                     t          t                    }  | t          t          d          t          d          t          t          d          t          d                                        t          t          d          t          d          t	          t          d          t          d                              k    sJ d S )Nr-   r2   g      @g      @)r   r6   r   r   r8   )	bottom_rls    r   test_bottom_up_oncerD   H   s    r""I9U1Q441uQsVVQsVV'<'<==>>addAaDD&3300112 2 2 2 2 2r   c                      t           t          dz  z   }  t          d t                    |           } t          d t                    |           }t          |          |k    sJ d S )Nr4   c                     | dz   S r,   r#   vs    r   <lambda>ztest_expr_fns.<locals>.<lambda>Q   s
    AE r   c                 R    t          j        t          | t          d                    S r,   )r   __new__r   r   rG   s    r   rI   ztest_expr_fns.<locals>.<lambda>R   s    EM#q!A$$77 r   )r   r   r   r
   r   r	   )r/   er3   s      r   test_expr_fnsrM   O   s^    q!t8D,	//8,,T22AC	77CCDIIA1::??????r   N)%sympy.strategies.traverser   r   r   r   r   r   sympy.strategies.rlr	   sympy.strategies.utilr
   sympy.core.addr   sympy.core.basicr   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   r   	sympy.abcr   r   r   r   r   r$   r&   r!   r"   r8   r6   rA   rD   rM   r#   r   r   <module>rW      s  I I I I I I I I I I I I I I I I ' ' ' ' ' ' * * * * * *       " " " " " " & & & & & & " " " " " " ) ) ) ) ) ) ) )          D D D' ' '( ( (
' ' '
- - -     	 	 	 	 	U 	 	 	  2 2 22 2 2    r   