
    \hT              	          S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	  S SK
Jr  S SKJrJr  S SKJr  S SKJrJr  S S	KJrJr  S S
KJr  S SKJr  S SKJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJ  S SKKJLrL  S SKMJNrNJOrOJPrP  S SKQJRrRJSrSJTrT  \" S5      u  rUrVrWrX\" S5      u	  rYrZr[r\r]r^r_r`raS rbS rcS rdS reS rfS rgS rhS riS rjS rkS rlS rmS rnS roS  rpS! rqS" rrS# rsS$ rtS% ruS& rv S' rwS( rxS) ryS* rzS+ r{S, r|S- r}S. r~S/ rS0 rS1 rS2 rS3 rS4 rS5 rS6 rS7 rS8 rS9 rS: rS; rS< rS= rS> rS? r\OS@ 5       rSA rSB rSC rSD rSE rSF rSG rSH rSI rSJ rSK rSL rSM rSN rSO rSP rSQ rSR rSS r\PST 5       rSU rSV rSW rSX rSY rSZ rS[ rS\ rS] rS^ rS_ rS` rSa rSb rSc rSd rSe rSf rgg)h    )Q)refine)oo)EqualityEqNe)S)Dummysymbols)	Piecewise)cossin)IntervalUnion)Containssimplify)/AndBoolean
EquivalentITEImpliesNandNorNotOrPOSformSOPformXorXnor	conjuncts	disjunctsdistribute_or_over_anddistribute_and_over_oreliminate_implicationsis_nnfis_cnfis_dnfsimplify_logicto_nnfto_cnfto_dnfto_int_reprbool_maptruefalseBooleanAtom
is_literalterm_to_integertruth_table
as_Booleanto_anfis_anfdistribute_xor_over_and
anf_coeffsANFformbool_mintermbool_maxtermbool_monomial_check_pair_convert_to_varsSOP_convert_to_varsPOS	Exclusivegateinputcount)CNF)raisesXFAILslow)combinationspermutationsproductzA:Dza:e w:zc                     [         [        -  [        [         [        5      :X  d   e[         [        -  [        [         [        5      :X  d   e[         [        -  [        -  [        [        [         [        5      [        5      :X  d   e[         [        -	  [        [         [        5      :X  d   e[         [        -  [        [        [         5      :X  d   e[         ) [        [         5      :X  d   e[         [        -  [        [         [        5      :X  d   eg)z)Test that |, & are overloaded as expectedN)ABr   r   Cr   r   r        V/var/www/auris/envauris/lib/python3.13/site-packages/sympy/logic/tests/test_boolalg.pytest_overloadingrQ   !   s     q5C1Iq5Bq!HEQ;"SAY****6WQ]"""6WQ]"""2Q<<q5C1IrO   c            
         [        5       [        L d   e[        [        5      [        :X  d   e[        S5      [        L d   e[        S5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[        5      [        :X  d   e[        S[        5      [        L d   e[        SSS5      [        L d   e[        SS[        5      [        :X  d   e[        SS[        5      [        L d   e[        S[        5      [        :X  d   e[	        [
        S 5        [        [        S:  [        S:  5      [        L d   e[        S:  n [        X R                  5      U R                  :X  d   e[        [        :  [        [        :  [        [        :  [        [        :*  4u  pp4[        XX45      [        X15      :X  d   e[        X!XC45       Vs1 s H  n[        U6 iM     sn[        X15      1:X  d   e[        [        [        [        S5      [        [        S5      5      [        [        [        S5      [        [        S5      5      5      [        L d   eg s  snf )NTF   c                  "    [        S[        5      $ N   )r   rK   rN   rO   rP   <lambda>test_And.<locals>.<lambda>;   s
    c!QirO   r   )r   r/   rK   r0   rD   	TypeError	canonicalrL   rH   r   abr   c)eglgeleis         rP   test_Andrd   -   s   5D==q6Q;;t9u:tT?d"""tUu$$$ue%%%tQ<1ua=E!!!tT4 D(((tT1"""tUA%'''q!9>>
9'(q1ua1f&&&	AAq++!++---q5!a%aa/LA"qRB
***)1.9:9CG9:s2zlJJJs2a8R1X&Bq!HbAh(?@EIII ;s   -I4c                     [        5       [        L d   e[        [        5      [        :X  d   e[        S5      [        L d   e[        S5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[        5      [        L d   e[        S[        5      [        :X  d   e[        SSS5      [        L d   e[        SS[        5      [        L d   e[        SS[        5      [        :X  d   e[        S[        5      [        L d   e[	        [
        S 5        [        [        S:  [        S:  5      [        L d   e[        S:  n [        X R                  5      U :X  d   e[        [        :  [        [        :  [        [        :  [        [        :*  4u  pp4[        XX45      [        X5      :X  d   eg )NTFrS   c                  "    [        S[        5      $ rU   )r   rK   rN   rO   rP   rW   test_Or.<locals>.<lambda>S   s
    bAhrO   )r   r0   rK   r/   rD   rY   rZ   rL   )r^   r_   r`   ra   rb   s        rP   test_Orrh   E   s   45==a5A::d8te9dD>T!!!dE?d"""eUu$$$dA;$eQ<1dE5!T)))dE1%%%eUA!###a8t
9&'a!eQ!V$$$	AAa"""q5!a%aa/LA"aBr!y(((rO   c                     [        5       [        L d   e[        [        5      [        :X  d   e[        [        [        5      [        L d   e[        S[        [        5      [        L d   e[        [        [        [        [        [        5      [        :X  d   e[        SSS[        [        5      [        [        [        5      ) :X  d   e[        S5      [        L d   e[        S5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[        5      [        ) :X  d   e[        S[        5      [        :X  d   e[        SSS5      [        L d   e[        SS[        5      [        ) :X  d   e[        SS[        5      [        :X  d   e[        [        [        [        5      [         5      (       d   e[        [        [        [        [        [        5      5      [        [        [        [        [        5      :X  d   e[        [        [        [        [        [        5      5      [        [        [        5      :X  d   e[        [        S:  [        S:  [        5      [        SS[        5      s=:X  a  [        SS[        5      :X  d   e   e[        S:  n [        X R                  5      [        SS5      s=:X  a  [        SS5      :X  d   e   eg NTFrS   r   )	r   r0   rK   r/   rL   
isinstancerM   DrZ   )r^   s    rP   test_Xorrm   [   s/   5E>>q6Q;;q!9tQ?d"""q!Q1"""tUE1a(SAYJ666t9u:tT?e###tUt###ue%%%tQ<A2ua=AtUE"d***tUA1"$$$ueQ1$$$c!Qi%%%%q!SAY3q!Q?222q!SAY3q!9,,,q1ua1fa C1aL@C1aL@@@@@	AAq++#a)8s1ay88888rO   c                      [         [        -  n U R                  [        5      [         [        -  [         ) [        ) -  -  :X  d   eg N)xyrewriter   exprs    rP   test_rewrite_as_Andru   t   s3    q5D<<QA27 3333rO   c                      [         [        -  n U R                  [        5      [         [        ) -  [        [         ) -  -  :X  d   eg ro   )rp   rq   rr   r   rs   s    rP   test_rewrite_as_Orrw   y   s3    q5D<<QB1r62222rO   c                      [         [        -  [        [        ) -  -  n U R                  [        5      [         [        -  ) [        [        ) -  ) -  ) :X  d   eg ro   )rq   zwrr   r   rs   s    rP   test_rewrite_as_Nandr{   ~   sC    Ea1"fD<<QU8QBi#7!8888rO   c                      [         [        [        ) -  -  n U R                  [        5      [         ) [        [        ) -  ) -  ) :X  d   eg ro   )ry   rq   rz   rr   r   rs   s    rP   test_rewrite_as_Norr}      s9    QB<D<<1"aRy. 1111rO   c                      [        [        S 5        [        S5      [        L d   e[        S5      [        L d   e[        S5      [        L d   e[        S5      [        L d   e[        S5      [        L d   eg )Nc                      [        SS5      $ NTF)r   rN   rO   rP   rW   test_Not.<locals>.<lambda>   s    c$.rO   TFr   rS   rV   )rD   rY   r   r0   r/   rN   rO   rP   test_Notr      sa    
9./t9u:q6T>>q6U??q6U??rO   c                  ,   [        5       [        L d   e[        [        5      [        ) :X  d   e[        S5      [        L d   e[        S5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[        5      [        ) :X  d   e[        S[        5      [        L d   e[        SSS5      [        L d   e[        SS[        5      [        ) :X  d   e[        SS[        5      [        L d   eg r   )r   r0   rK   r/   rN   rO   rP   	test_Nandr      s    6U??7qb==:;$du$$$e$$$u%%%a=QBq>T!!!dD!U***dA1"$$$eQ4'''rO   c                  (   [        5       [        L d   e[        [        5      [        ) :X  d   e[        S5      [        L d   e[        S5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[        5      [        L d   e[        S[        5      [        ) :X  d   e[        SSS5      [        L d   e[        SS[        5      [        L d   e[        SS[        5      [        L d   eg r   )r   r/   rK   r0   rN   rO   rP   test_Norr      s    5D==q6aR<<t9u:tT?e###tUu$$$ue$$$tQ<5   ua=QBtT4 E)))tT1&&&tUA%'''rO   c                     [        5       [        L d   e[        [        5      [        ) :X  d   e[        [        [        5      [        L d   e[        S[        [        5      [        L d   e[        [        [        [        [        [        5      [        ) :X  d   e[        S5      [        L d   e[        S5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[        5      [        :X  d   e[        S[        5      [        ) :X  d   e[        SSS5      [        L d   e[        SS[        5      [        :X  d   e[        SS[        5      [        ) :X  d   eg r   )r    r/   rK   r0   rN   rO   rP   	test_Xnorr      s>   6T>>7qb==1:au$$$1aA1"$$$:;$dt###e%%%u%%%a=Aq>aReU#u,,,eQ1$$$ua QB&&&rO   c                  P   [        [        S 5        [        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[        S[
        5      [        L d   e[        SS5      [        L d   e[        SS5      [        L d   e[
        [        -	  [        [
        -  :X  d   e[
        S:  [
        S:  -	  [
        S:  :X  d   e[
        S:  [        R                  [
        :  -	  [        L d   e[
        [
        -	  [        L d   eg )Nc                  4    [        [        [        [        5      $ ro   )r   rK   rL   rM   rN   rO   rP   rW   test_Implies.<locals>.<lambda>   s    wq!Q/rO   TFr   rS   )	rD   
ValueErrorr   r/   r0   rK   rL   r	   OnerN   rO   rP   test_Impliesr      s   
:/04$&&&45(((5$4'''5% D(((1a=D   1a=D   1a=E!!!6Q!VEqAv16***Equuqy!T)))6T>>rO   c                     [        [        [        5      [        [        [        5      s=:X  a  [        [        [        [        5      :X  d   e   e[        5       [        L d   e[        [        [        5      [        [        5      s=:X  a
  [        L d   e   e[        SS5      [        SS5      s=:X  a
  [        L d   e   e[        SS5      [        SS5      s=:X  a
  [        L d   e   e[        [        S5      [        :X  d   e[        [        S5      [        [        5      :X  d   e[        [        [        S5      [        [        -  :X  d   e[        [        [        S5      [        ) [        ) -  :X  d   e[        S[        5      [        :X  d   e[        S[        5      [        [        5      :X  d   e[        [        [        [        [        5      5      [        [        [        [        5      [        5      :w  d   e[        [        S:  [        S:  5      [        L d   e[        [        S:  [        S:  S5      [        L d   e[        [        S:  [        S:  S5      [        L d   e[        [        S:  [        R                  [        :  5      [        SS5      s=:X  a  [        SS5      :X  d   e   e[        [        [        [        5      [        [        [        5      5      [        L d   eg rj   )
r   rK   rL   r/   r0   r   rM   r	   r   r   rN   rO   rP   test_Equivalentr      s*   az!Q/F:aA3FFFFFF<4az!}444444dD!Zu%=EEEEEEdE"j&=FFFFFFa!###a3q6)))aD!QU***aE"qbA2g---aq   as1v%%%aAq)*jAq9I1.MMMMa!eQ!V$---a!eQ!VQ'5000a!eQ!VQ'5000a!eQUUQY':a+;Oz!Q?OOOOOOhq!nhq!n5===rO   c                      [        SSS5      [        L d   e[        SSS5      [        L d   e[        SSS5      [        L d   e[        SSS5      [        L d   eg )NFT)rA   r/   r0   rN   rO   rP   test_Exclusiver      s^    UE5)T111T5%(D000T4'5000T4&%///rO   c                     [        [        [        [        5      5      R	                  [        [        [        5      [        [        5      5      5      SL d   e[        [        [        5      R	                  [        [        -	  [        [        -	  -  5      SL d   e[        [        ) -  [        ) [        -  -  R	                  [        ) [        ) -  [        [        -  -  5      SL d   e[        [        -	  R	                  [        ) [        ) -	  5      SL d   e[        [        [        -	  -	  R	                  [        [        [        -	  -	  5      SL d   e[        [        S 5        g )NTFc                  P    [         [        -  R                  [         [        :  5      $ ro   )rK   rL   equalsrN   rO   rP   rW   test_equals.<locals>.<lambda>   s    Qq1u(=rO   )
r   r   rK   rL   r   r   r   rM   rD   NotImplementedErrorrN   rO   rP   test_equalsr      s    r!Qx=CFCF 34<<<a""AFqAv#674???!VQ''!qbQU(;<DDDF??A2!8$---!q&M!!!Q-0E999
 =>rO   c                  &  ^ / SQ/ SQ/ SQ/ SQ/n / SQ/ SQ/ SQ/ SQ/n[        [        [        [        /U 5      [	        [        [        [        5      [        5      [        [        [        5      [        5      5      :X  d   e[        [        [        [        [        /U5      5      [        [	        [        [        [        5      [        [        5      5      [        [        [        5      5      5      :X  d   e[        [        [        [        /X-   5      [        L d   e[        [        [        [        /X-   5      [        L d   e[        [        5       [        5       [        5       /X-   5      [        L d   e/ S	Q/ S
Q/ SQ/ SQ/ SQ/m/ SQ/ SQ/ SQ/n[        [        [        [        [        /TU5      [	        [        [        [        5      [        [        [        5      [        [        5      5      5      :X  d   e[        [        [        [        [        /TU5      [        [	        [        [        5      [        5      [        5      :X  d   e/ SQm/ SQn[        [        [        [        [        /TU5      [	        [        [        [        5      [        [        [        5      [        [        5      5      5      :X  d   e[        [        [        [        [        /TU5      [        [	        [        [        5      [        5      [        5      :X  d   eS/ S
QS/ SQ/ SQ/mS/ SQS/n[        [        [        [        [        /TU5      [	        [        [        [        5      [        [        [        5      [        [        5      5      5      :X  d   e[        [        [        [        [        /TU5      [        [	        [        [        5      [        5      [        5      :X  d   eS[        S[        S0/mS/ SQS/n[        [        [        [        [        /TU5      [	        [        [        [        5      [        [        [        5      [        [        5      5      5      :X  d   e[        [        [        [        [        /TU5      [        [	        [        [        5      [        5      [        5      :X  d   e[        S[        S0S/m/ SQ/n/ SQ/m[        [        U4S j5        [        [        U4S j5        [        [        S 5        [        [        [	        [        [         5      5      n[#        [        [        [         -  -  5      U:X  d   e[#        [        [        -  [        [         -  -  5      U:X  d   e[#        [%        [        [        5      5      [	        [        [        5      [        5      :X  d   e[#        ['        [        [        5      5      [	        [        [        [        5      [        [        [        5      [        [        5      5      5      :X  d   e[#        [        [)        [        S5      [         5      5      [        [)        [        S5      [         5      :X  d   e[#        [        [)        [        S5      [        5      5      [        [)        [        S5      [        5      :X  d   e[#        [        [)        [        [        5      [         5      5      [        [)        [        [        5      [         5      :X  d   e[#        [	        [        [)        [        S5      [        5      [        [)        [        S5      [         5      5      5      [        [)        [        S5      [	        [        [         5      5      :X  d   e[        ) [        ) -  [        ) -  [        ) [        ) -  [        -  -  n[        [        U5      n[#        U5      [        [        ) -  [        ) -  :X  d   e[        [        S 5        [+        [	        [        [        :*  [        [        [        :  [        5      5      5      [        [        :*  :X  d   e[+        [	        [        [        :*  [        [        [        :  [        5      5      5      [        [        :*  :X  d   e[+        [	        [        [        :  [        [        [        :  [        5      5      5      [        [        :  :X  d   e[-        S5      u	  pdpxpYpnXd-  U-  U-  U-  U	-  U
-  U-  U-  Xd-  U-  U-  U-  U	-  U
-  U-  U) -  -  n[#        U5      U:X  d   e[#        Xd-  U-  U-  Xd-  S9Xx-  :X  d   e[        [        [        /SS//5      n[        [        [        /SS//5      U:X  d   e[        [        [        /SS//5      U:X  d   e[        [        S 5        [        [        /S//S//5      [        L d   e[        [        /S//S//5      [        L d   e[        [        // / 5      [.        L d   e[        [        S  5        [        [        /S//S//5      [        L d   e[        [        /S//S//5      [        L d   e[        [        // / 5      [.        L d   e[+        [        [        -  [        [         -  -  5      [        [        [	        [        [         5      5      :X  d   e[+        [        [        [        [        5      5      5      S!:X  d   e[+        [	        [        [        [        5      5      5      S":X  d   e[+        [        [1        [        S5      [1        [        [        5      5      5      [        [1        [        S5      [1        [        S5      5      :X  d   e[        [1        [        S-
  S5      [1        [        [        5      5      R+                  5       [        [1        [        S5      [1        [        S5      5      :X  d   e[        [3        [        S-
  S5      [3        [        [        5      5      R+                  5       [        [3        [        S5      [3        [        [        5      5      :X  d   e[        [1        [        S-
  S5      [3        [        [        5      5      R+                  5       [        [1        [        S5      [3        [        S5      5      :X  d   e[        [1        [        S-
  S5      [1        [        [        [        -   5      [1        [        [        -   S5      5      R+                  5       [        [1        [        S5      [1        [        S#5      [1        [        S5      5      :X  d   e[        [1        [        S-
  S5      [1        [        S-   S5      5      R+                  5       [1        [        S5      :X  d   e[        [3        [        S-
  S5      [3        [        S-   S5      5      R+                  5       [3        [        S5      :X  d   e[        [1        [        S-
  S5      [1        [        S-   S5      5      R+                  5       S!:X  d   e[        [3        [        S-
  S5      [3        [        S-   S5      5      R+                  5       [        [3        [        S5      [3        [        S5      5      :X  d   e[+        [5        [        [        ) 5      5      S":X  d   eg$)%z)
Test working of simplification methods.
r   r   rS   r   rS   rS   rS   r   r   )rS   rS   r   )r   r   r   r   rS   r   rS   r   rS   rS   rS   rS   r   r   r   rS   r   r   rS   rS   r   rS   rS   rS   rS   r   rS   rS   rS   rS   rS   rS   )r   r   r   r   )r   r   rS   r   r   rS   r   rS   )rS               )r   rV      rS   r   r   r   c                  D   > [        [        [        [        [        /T 5      $ ro   )r   rz   rp   rq   ry   mintermss   rP   rW   -test_simplification_boolalg.<locals>.<lambda>#      w1a|X>rO   c                  D   > [        [        [        [        [        /T 5      $ ro   r   rz   rp   rq   ry   r   s   rP   rW   r   $  r   rO   c                  D    [        [        [        [        [        /S/5      $ )Nabcdefgr   rN   rO   rP   rW   r   &  s    gq!QlYK@rO   rV   r   c                  :    [        [        [        [        -  -  SS9$ )Nblabla)form)r)   rK   rL   rM   rN   rO   rP   rW   r   7  s    ~a1q5kIrO   za b c d e f g h j)dontcarec                  .    [        [        /S//S//5      $ NrS   )r   rp   rN   rO   rP   rW   r   L      wsaSEQC59rO   c                  .    [        [        /S//S//5      $ r   )r   rp   rN   rO   rP   rW   r   Q  r   rO   FTN)r   rp   rq   ry   r   r   r   r   r/   r
   rz   rD   r   rY   rK   rL   rM   r)   r   r   r   r   r   r0   r   r   r   )set1set2	dontcaresansr\   r^   r[   r]   dfr_   hjrt   r   s                 @rP   test_simplification_boolalgr      sh
    y)Y7Dy)Y7DAq!9d#r#c!fa.#c!fa.'IIIIw1ay$'(r#c!fc!f%s1ay123 3 3Aq!9dk*d222Aq!9dk*d222EGUWeg.<DDDlL,H|\:IAq!h	2
3q!9c#a&#a&)*	+,	+Aq!Q<95RA]A9NNNN HIAq!h	2
3q!9c#a&#a&)*	+,	+Aq!Q<95RA]A9NNNN<LHL!$IAq!h	2
3q!9c#a&#a&)*	+,	+Aq!Q<95RA]A9NNNNAq!Q< HL!$IAq!h	2
3q!9c#a&#a&)*	+,	+Aq!Q<95RA]A9NNNNAq!a HI{H
:>?
:>?
9@A aAq
C!q1u+&#---1q5QU+,333'!Q-(Bs1vqM999*Q*+c!QiSVSV,-. . .#hq!na01S!Q5KKKK#hq!na01S!Q5KKKK#hq!na01S!Q5KKKK"S!Q3S!Q5KLM(1a."Q(+, , ,
qbA21"r'A+&AAq	A!QB!+++
:IJBqAvs1q5!}-.16:::BqAvs1q5!}-.16:::BqAvs1q5!}-.16::: !((; <A!aA519q=1q 1$q(1,519q=1q 1$q(A2-.D $4''' 15A+/QU<EEE 1a&Aq6(
#CAq6QF8$+++Aq6QF8$+++
:9:A3!u%---A3!u%---A3B5(((
:9:A3!u%---A3!u%---A3B5((( QUq1u%&#aAq*::::C3q6N#u,,,Bq#a&M"d***C1a"Q(+,Bq!HbAh0GGGGr!a%|R1X&//1SAq2a85LLLLr!a%|R1X&//1SAq2a85LLLLr!a%|R1X&//1SAq2a85LLLLr!a%|R1q5\2a!eQ<8AA 	R1Xr!Ry"Q(	+, , ,r!a%|RAq\*335AqAAAr!a%|RAq\*335AqAAAr!a%|RAq\*335>>>r!a%|RAq\*33 	R1Xr!Qx	 ! ! !CA2J4'''rO   c            
         / SQ/ SQ/ SQ/ SQ/ SQ/n [        [        [        [        5      5      [        5      [        [        [        04:X  d   e[        [        [        [
        [        [        /U 5      [        [        [
        [        [        /U 5      5      [        [        [        [        5      [        5      [        [        [
        5      [        5      [        5      [
        [
        [        [        [        [        [        [        04:X  d   e[        [        [
        [        [        // SQ/5      [        [        [        [        // SQ/5      5      S:w  d   e[        [
        [        [        // SQ/ SQ/5      n[        [        [        [        // SQ/ S	Q/5      n[        X5      U[        [        [        [        04:X  d   e[        [        [
        [        5      [        [
        [        5      ) 5      S:X  d   e[        [        [
        [        5      [        [
        [        5      5      b   e[        [        [
        [        5      [        [
        [        [        5      5      b   e[        [        [
        [        [        5      [        [
        [        [        5      ) 5      S:X  d   e[        [        [        [
        [        [        5      [        [        [
        [        [        5      ) 5      S:X  d   eg
)z$
Test working of bool_map function.
r   r   r   r   r   r   Fr   r   N)r.   r   r[   r   rz   rp   rq   ry   r   r   r   r\   r]   r   )r   	function1	function2s      rP   test_bool_mapr   h  s   
 lL,HCAK#Aq6{222GQ1aL(3Q1aL(353q61r#a&!}a01aAq!Q2JKL L L GQ1I	{3Q1I	{358=> > >Aq	Iy#9:IAq	Iy#9:II)1a|$% % %C1IAq	z*e333C1Ir!Qx(000C1Is1a|,444C1aL3q!Q<-0E999C1aOc!Q1o%56%???rO   c                  :   [        [        S5      [        :X  d   e[        [        SS5      [        :X  d   e[        [        S5      [        L d   e[        [        SS5      [        L d   e[        [        S5      [        L d   e[        [        S5      [        :X  d   eg)z>Test that mixing symbols with boolean values
works as expectedTFN)r   rK   r0   r   r/   rN   rO   rP   test_bool_symbolr     s     q$<1q$"""q%=E!!!q$%'''a;$a<1rO   c                  |   [        S[        5      SL d   e[        [        [        5      SL d   eSS:X  d   eS[        :w  d   eS[        :H  SL d   eSS:X  d   eS[        :w  d   eS[        :H  SL d   e[        R                  SL d   e[
        [        -  R                  (       d   e[
        [        -  R                  (       d   e[
        ) R                  (       d   e[
        [        -  R                  (       d   e[
        R                  [        [
        [        5      :w  d   e[        [
        [        5      (       d   eg rj   )rk   r   r/   r0   
is_BooleanrK   rL   rN   rO   rP   test_is_booleanr     s   dG$---dG$,,,9999I%::::J5   ??d"""EEB???E<<:a1111a!!!!rO   c                  p   [         [        -  R                  [         S5      [        :X  d   e[         [        -  R                  [         S5      [        L d   e[         [        -  R                  [        S5      [         :X  d   e[         [        -  R                  [        S5      [        L d   e[         [        -  R                  [         S[        S05      [        L d   e[         [        -  R                  [         S5      [        L d   e[         [        -  R                  [         S5      [        :X  d   e[         [        -  R                  [        S5      [        L d   e[         [        -  R                  [        S5      [         :X  d   e[         [        -  R                  [         S[        S05      [        L d   eg r   )rK   rL   subsr0   r/   rN   rO   rP   	test_subsr     s2   E<<4 A%%%E<<5!U***E<<4 A%%%E<<5!U***E<<D!T*+t333E<<4 D(((E<<5!Q&&&E<<4 D(((E<<5!Q&&&E<<D!T*+t333rO   c                  j    [        [        [        S5      5      u  pX-  X-  :X  d   eX-  X-  :X  d   eg)z$Test for commutativity of And and OrzA,BN)mapr   r   )rK   rL   s     rP   test_commutativer     s4    w'DA5AE>>5AE>>rO   c                  \    [         [        -  [        -  [         [        [        -  -  :X  d   eg)zTest for associativity of AndNrK   rL   rM   rN   rO   rP   test_and_associativityr     s"     EQ;!q1u+%%%rO   c                  \    [         [        -  [        -  [         [        [        -  -  :X  d   eg ro   r   rN   rO   rP   test_or_assicativityr     s     UaKQ!a%[)))rO   c                  ,    [        5       n U ) ) U :X  d   eg ro   )r   )r[   s    rP   test_double_negationr     s    	AR5A::rO   c            	         [        [        [        [        SS95      [        ) [        -  :X  d   e[        [        [        [        [        5      -	  -	  5      [        [        [        [        5      [        [        5      5      [        [        5      5      :X  d   e[        [        [        [        [        [        5      5      [        ) [        -  [        ) [        -  -  [        ) [        -  -  [        ) [        -  -  :X  d   eg )NFevaluate)	r%   r   rK   rL   rM   r   r   r   rl   rN   rO   rP   test_eliminate_implicationsr     s    !'!Q"?@aR1HLLL!	a3q6k!"SVSV"4c!f=> > >!*Q1a"89BFrAv1"q&)aR!V45 5 5rO   c                  L   [        [        [        -  [        -  5      [        [        [        1:X  d   e[        [        [        -  [        -  5      [        [        -  [        1:X  d   e[        [        5      [        1:X  d   e[        S5      S1:X  d   e[        S5      S1:X  d   eg r   )r!   rK   rL   rM   rN   rO   rP   test_conjunctsr     s    QUQYAq!9,,,a!eq[!a!eQZ///Q<A3T?tf$$$Uw&&&rO   c                  P   [        [        [        -  [        -  5      [        [        [        1:X  d   e[        [        [        -  [        -  5      [        [        -  [        -  1:X  d   e[        [        5      [        1:X  d   e[        S5      S1:X  d   e[        S5      S1:X  d   eg r   )r"   rK   rL   rM   rN   rO   rP   test_disjunctsr     s    QUQYAq!9,,,a!eq[!q1uk]222Q<A3T?tf$$$Uw&&&rO   c            	      >   [        [        [        [        [        5      [
        5      5      [        [        [        [
        5      [        [        [
        5      5      :X  d   e[        [        [        [        [        [
        5      5      5      [        [        [        [        5      [        [        [
        5      5      :X  d   e[        [        [        [        [        [
        5      5      5      [        [        [        [        5      [        [        [
        5      5      :X  d   eg ro   )	r$   r   r   rK   rL   rM   r#   r8   r   rN   rO   rP   test_distributer     s    !"SAY"23s2a8R1X7NNNN!#aAq"23r#a)SAY7OOOO"3q#a)#45SAYAq	9RRRRrO   c                     [        S5      u  pn[        [        X5      5      [        X5      :X  d   e[        [        X5      5      [	        X[        X5      5      :X  d   e[        [        [        X5      [        X5      U5      5      [	        U SX-  SS9:X  d   e[        [        [        X5      [        X5      [        X5      [        X5      5      5      S:X  d   e[        [        U [        U5      [        X5      [        X5      [        X5      5      5      [	        S[        X5      [        XU5      SS9:X  d   e[        [	        X5      5      [	        X5      :X  d   e[        [        U 5      5      [	        U SSS9:X  d   e[        [        X5      5      [	        S[        X5      SS9:X  d   e[        [        X5      5      [	        XS[        X5      SS9:X  d   e[        [        X5      5      [	        U S[        X5      SS9:X  d   e[        [        X5      5      [	        XSSS9:X  d   e[        [        X-  X-	  5      SS9[	        S[        [        X5      [        X5      5      SS9:X  d   e[        [        X-  X-  5      SS9[	        S[        [	        X5      [        X5      5      SS9:X  d   e[        X U-  U) -  ) -  5      S:X  d   eg )Nx,y,zTFremove_true)deep)r   r6   r   r   r   r   r   r   r    r   r   )rp   rq   ry   s      rP   test_to_anfr     su   gGA!#a)A	)))"Q(s1Q3333"WQ]CIq12q$512 2 2"T!ZQDJFG4OOO"QAA	3q9d1jABtSYA!%@A A A#a)A	)))#a&>SDe<<<<$q*T3q9%!HHHH#a)A$A	u MMMM'!- C4Q$NNNN*Q"#s15'IIII$quaf%E2tSA71=1uEF F F#aeQU#%0tRA	3q9-5AB B B !A
m#$---rO   c            	      	   [        [        5      [        L d   e[        [        5      [        L d   e[        [        5      [        :X  d   e[        [        [        ) -  [        -  5      [        L d   e[        [        [        ) -  [        -  5      [        L d   e[        [        [        -	  5      [        ) [        -  :X  d   e[        [        [        [        [        5      5      [        ) [        -  [        ) [        -  -  [        ) [        -  -  :X  d   e[        [        [        -  [        -  5      [        [        -  [        -  [        ) [        ) -  [        -  -  [        [        ) -  [        ) -  -  [        ) [        -  [        ) -  -  :X  d   e[        [        [        [        [        5      5      [        ) [        -  [        [        -  -  :X  d   e[        [        [        [        -  [        -  5      5      [        ) [        ) -  [        ) -  :X  d   e[        [        [        [        -  [        -  5      5      [        ) [        ) -  [        ) -  :X  d   e[        [        [        [        -	  5      5      [        [        ) -  :X  d   e[        [        [        [        [        [        5      5      5      [        [        [        [        [        5      [        [        ) [        ) [        ) 5      5      :X  d   e[        [        [        [        -  [        -  5      5      [        ) [        -  [        -  [        [        ) -  [        -  -  [        [        -  [        ) -  -  [        ) [        ) -  [        ) -  -  :X  d   e[        [        [        [        [        [        5      5      5      [        ) [        ) -  [        [        ) -  -  :X  d   e[        [        [        -	  [        [        -	  -  5      [        [        ) -  [        ) [        -  -  :X  d   e[        [        [        -	  [        [        -	  -  S5      [        ) [        ) -  [        -  [        -  [        [        ) -  [        ) [        -  -  -  :X  d   e[        [        SS5      R                  5       [        :X  d   e[        [        SS5      R                  5       [        ) :X  d   e[        [        S 5        g )NFrS   r   c                  P    [        [        S:  S/[        5      R                  5       $ r   )r   rK   rL   r*   rN   rO   rP   rW   test_to_nnf.<locals>.<lambda>  s    c!a%!a0779rO   )r*   r/   r0   rK   rL   r   rM   r   r   r   r   rD   rY   rN   rO   rP   test_to_nnfr      sk   $<4%=E!!!!9>>!qb&1*%%%!qb&1*&&&!q&>aR!V###*Q1%&A26qb1f*=!a*HHHH!a%!)EAI1"r'A+&!qb&A2+61"q&A2+FG G G#aA,QBFq1u#5555#a!eai.!aR1"Wr\111#a!eai.!aR1"Wr\111#a1f+!qb&(((#jAq)*+s2aA;A2rA2/OOOO#a!eai.!BFQJ1r6A:&!a%1"*5!qbA2FG G G#c!Ql#$!qbQ!V(<<<<16a1f%&1r6qb1f*====16a1f%u-B!GaK!OaRQBF 345 5 5q!Q< A%%%q!Q< QB&&& 99:rO   c                     [        [        [        -  ) 5      [        [	        [        5      [	        [        5      5      :X  d   e[        [
        [        -  [        -  5      [        [        [
        [        5      [        [        [        5      5      :X  d   e[        [
        [        -	  5      [
        ) [        -  :X  d   e[        [
        [        [        -  -	  5      [
        ) [        -  [
        ) [        -  -  :X  d   e[        [
        [        [        -  -  [
        ) [        [        -  -  -  S5      [        [        -  :X  d   e[        [
        [        -  5      [        [
        [        5      :X  d   e[        [        [
        [        5      5      [        [        [
        [	        [        5      5      [        [        [	        [
        5      5      5      :X  d   e[        [        [
        [        [        -  5      5      [
        ) [        -  [
        ) [        -  -  [        ) [        ) -  [
        -  -  :X  d   e[        [        [
        [        [        -  5      S5      [        [        [	        [        5      [
        5      [        [	        [        5      [
        5      [        [        [        [	        [
        5      5      5      :X  d   e[        [
        S-   5      [
        S-   :X  d   eg NTrS   )r+   rL   rM   r   r   rK   r   r   rN   rO   rP   test_to_cnfr     s   AE(s3q63q622221q5A+#bAh1a"9999!q&>qbAX%%%!A,QBFrAv#6666!q1u+a!e,d3q1u<<<!a%=C1I%%%*Q"#s2aQ="QA-'HHHH*QA&'BFrAv1"r'A+./ / /*QA&-r#a&!}bQmR1c!f-=>? ? ?!a%=AE!!!rO   c                    ^ [        S5      u  pp#pEpgpppnX-  U-  U-  U-  U-  U-  U-  U-  X-  U-  U-  U-  U-  U-  U	-  U-  -  X
-  U-  U-  U-  U-  U-  U-  U-  -  m[        [        T5      5      (       d   e[        [        U4S j5        [        [        [        4[        [        45       H4  u  nnU" XX#XEXgU5	      m[        [        U4S j5        U" TSSS9T:X  a  M4   e   g )Nzx1:16c                     > [        T SS9$ NTr   r+   eqs   rP   rW   "test_issue_18904.<locals>.<lambda>2  s    vb48rO   c                     > [        T SS9$ r   r   r   s   rP   rW   r   5  s    6"t#<rO   T)r   force)	r   r'   r+   rD   r   zipr   r   r,   )x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15r   tr   s                    @rP   test_issue_18904r  ,  s   GNwGWDBBBBBSs7R<"r!B&+b0257R<"r!B&+c1B688b=3#c)C/#5:<B &*
:89S"I/01rrrrr2z<=d$/2555 1rO   c                  p    [        [        [        S:  [        S:  [        S:  -  -  5      5      (       d   eg )NrV      )r'   r+   r\   r[   rN   rO   rP   test_issue_9949r  9  s.    &!b&QUq1u$5567777rO   c                  h   [         R                  " [         R                  " [        [        -  ) 5      5      [        [        [        -  ) 5      :X  d   e[         R                  " [         R                  " [        [        -  [        -  5      5      [        [        [        -  [        -  5      :X  d   e[         R                  " [         R                  " [        [        -	  5      5      [        [        [        -	  5      :X  d   e[         R                  " [         R                  " [        [        [        -  -	  5      5      [        [        [        [        -  -	  5      :X  d   e[         R                  " [         R                  " [        [        [        -  -  [        ) [        [        -  -  -  5      5      [        [        [        [        -  -  [        ) [        [        -  -  -  5      :X  d   e[         R                  " [         R                  " [        [        -  5      5      [        [        [        -  5      :X  d   eg ro   )rC   
CNF_to_cnfto_CNFrL   rM   r+   rK   rN   rO   rP   test_to_CNFr  =  sQ   >>#**q1uX./6AE(3CCCC>>#**a!eq[12fa!eq[6IIII>>#**Q!V,-Q???>>#**Q1q5\23vaAEl7KKKK>>#**Q!a%[A2Q<%?@AVAQRUVQVK[\Z\`ade`eZfLfEgggg>>#**QU+,q1u===rO   c                  b   [        [        [        -  ) 5      [        [	        [        5      [	        [        5      5      :X  d   e[        [
        [        [        -  -  5      [        [        [
        [        5      [        [
        [        5      5      :X  d   e[        [
        [        -	  5      [
        ) [        -  :X  d   e[        [
        [        [        -  -	  5      [
        ) [        [        -  -  :X  d   e[        [
        [        -  5      [
        [        -  :X  d   e[        [        [
        [        5      S5      [        [        [
        [        5      [        [	        [
        5      [	        [        5      5      5      :X  d   e[        [        [
        [        [        -  5      S5      [        [        [
        [        [        5      [        [	        [
        5      [	        [        5      5      [        [	        [
        5      [	        [        5      5      5      :X  d   e[        [
        S-   5      [
        S-   :X  d   eg r   )r,   rL   rM   r   r   rK   r   r   rN   rO   rP   test_to_dnfr  F  se   AE(s3q63q62222!q1u+"SAYAq	"::::!q&>qbAX%%%!A,QB1q5>111!a%=AE!!!*Q"D)c!QiSVSV,-. . .*QA&-c!QlCAA/SVSV1DEF F F!a%=AE!!!rO   c                     ^ [        [        [        S5      5      u  pnU4S jmT" [        X-  X -  /XU/5      5      T" SS/SS//5      :X  d   eT" [        X-  X ) -  /XU/5      5      T" SS/SS//5      :X  d   eg )Nr   c                 T   >  [        U4S jU  5       5      $ ! [         a    U s $ f = f)Nc              3   4   >#    U  H  nT" U5      v   M     g 7fro   rN   ).0rp   sorted_recursives     rP   	<genexpr>=test_to_int_repr.<locals>.sorted_recursive.<locals>.<genexpr>Y  s     ;s!*1--ss   )sortedrY   )argr  s    rP   r  *test_to_int_repr.<locals>.sorted_recursiveW  s-    	;s;;; 	J	s    ''rS   rV   r   r   )r   r   r   r-   )rp   rq   ry   r  s      @rP   test_to_int_reprr"  T  s    '77+,GA! Kq	BCaVaV,-. . .KB!CDaVaW-./ / /rO   c            
         [        S5      u  p[        [        5      SL d   e[        [        5      SL d   e[        U 5      SL d   e[        [	        X5      5      SL d   e[        [        X[	        X5      5      5      SL d   e[        [        X[        X5      5      5      SL d   e[        [        [        U 5      U5      5      SL d   eg )Nx,yTF)r   r7   r/   r0   r   r   r   r   rp   rq   s     rP   test_is_anfr&  c  s    5>DA$<4%=D   !9#a)$$$#aCI&'4///#aBqH%&%///#c!fa.!U***rO   c                     [        [        5      SL d   e[        [        5      SL d   e[        [        ) 5      SL d   e[        [        [        -  5      SL d   e[        [        [        -  [        ) [        -  -  [        ) [        -  -  [        ) [        ) -  -  S5      SL d   e[        [        [        -  [        ) [        ) -  -  5      SL d   e[        [	        [        [        [        5      5      5      SL d   e[        [        [        -  5      SL d   e[        [        [        -  [        ) [        -  -  [        ) [        -  -  [        ) [        ) -  -  S5      SL d   eg r   )r&   r/   rK   rL   r   r   rN   rO   rP   test_is_nnfr(  n  s   $<4!91":!a%=D   1q5aR!V$Q/A27;UCtKKK1q5aR1"W%&$...#bAh- E)))!a%=E!!!1q5aR!V$Q/A27;TBeKKKrO   c                     [        [        5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  ) [        -  5      SL d   eg r   )r'   rp   rq   ry   rN   rO   rP   test_is_cnfr*  z      !9!a%!)$$$!a%!)$$$1q5A+$&&&1q5A+%'''AE(Q,5(((rO   c                     [        [        5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  [        -  5      SL d   e[        [        [        -  ) [        -  5      SL d   eg r   )r(   rp   rq   ry   rN   rO   rP   test_is_dnfr-    r+  rO   c            	      
   [        S5      u  pn[        SSS5      [        L d   e[        SSS5      [        L d   e[        SSS5      [        L d   e[        SSS5      [        L d   e[	        [        XU5      [        5      (       d   eSn [        XU5      U:X  d   eSn [        XU5      U:X  d   eSn[        [        X5      X5      U:X  d   e[        [        U S5      [        US5      S5      [        L d   e[        [        X5      [        [        5      :X  d   e[        [        X5      [        :X  d   e[        S[        [        5      [        :X  d   e[        S[        [        5      [        :X  d   e[        [        S 5        [        [        S 5        [        [        S 5        [        [        S	 5        [        SSS5      [        R                  L d   e[	        [        SSSSS
9[        5      (       d   e[        [        [        S5      [        [        5      [        [        [        [        5      :X  d   e[        [        [        S5      [        [        5      [        [        ) [        [        5      :X  d   e[        [        [        S5      [        [        5      [        [        ) [        [        5      :X  d   e[        [        [        S5      [        [        5      [        [        [        [        5      :X  d   e[        [        [        R                  [        5      [        [        5      [        [        [        [        5      :X  d   e[        [        [        R                  [        5      [        [        5      [        [        ) [        [        5      :X  d   e[        [        [        R                  [        5      [        [        5      [        [        ) [        [        5      :X  d   e[        [        [        R                  [        5      [        [        5      [        [        [        [        5      :X  d   e[        [        [        S5      [        [        5      [        :X  d   e[        [        [        S5      [        [        5      [        :X  d   e[        [        [        S5      [        [        5      [        :X  d   e[        [        [        S5      [        [        5      [        :X  d   e[        [        [        S5      [        [        5      R!                  [        S5      [        :X  d   e[        [        [        S5      [        [        5      R!                  [        S5      [        :X  d   e[        ["        S 5        g )NzA:CTFrS   r   c                  ,    [        S[        [        5      $ rU   )r   rp   rq   rN   rO   rP   rW   test_ITE.<locals>.<lambda>  s    c!QlrO   c                  $    [        S/ [        5      $ r   r   rq   rN   rO   rP   rW   r0        c!RmrO   c                  $    [        SS[        5      $ )NrS   rN   r2  rN   rO   rP   rW   r0    r3  rO   c                  $    [        S[        / 5      $ r   r2  rN   rO   rP   rW   r0    s    c!QmrO   r   c                  D    [        [        S:  [        [        [        5      $ r   )r   rp   rq   ry   rN   rO   rP   rW   r0    s    s1q5!Q2rO   )r   r   r0   r/   rk   r   r   rp   r   rq   rD   rY   r	   r   r   ry   r   r   r   s      rP   test_ITEr7    s   enGA!tUD!U***tT5!T)))udE"e+++ueT"d***c!lC((((AqQ<1AqQ<1As1y!1$$$r!U|SD\51U:::q!<3q6!!!q!<1q!Q<1q!Q<1
9*+
9+,
9+,
9+,q!Q<166!!!c!QE2C8888r!T{Aq!SAq\111r!U|Q"c1"am333r!T{Aq!S!Q]222r!U|Q"c!Ql222r!&&!}a#s1a|333r!''1~q!$QB1555r!&&!}a#sA2q!}444r!''1~q!$Aq!444 r!QxA!###r!QxA!###r!QxA!###r!QxA!###r!QxA##Aq)Q...r!QxA##Aq)Q...
:23rO   c                     [        S5      SL d   e[        S5      SL d   e[        [        5      SL d   e[        [        ) 5      SL d   e[        [        [        [        5      5      SL d   e[        [        R
                  " [        5      5      SL d   e[        [        [        R
                  " [        5      5      5      SL d   e[        [        [        [        5      5      SL d   e[        [        [        R
                  " [        5      [        R
                  " [        5      5      5      SL d   e[        [        S:  5      (       d   e[        [        [        -   S:  5      (       a   eg )NTFr   )
r2   rK   r   rL   r   zeror   r   rp   rq   rN   rO   rP   test_is_literalr:    s   dt###e$$$a=D   qb>T!!!bAh5(((affQi D(((c!&&)n%---bAh5(((c!&&)QVVAY/0E999a!e!a%!)$$$$$rO   c                  >   S[         -  [         S-  s=:X  a  [         :X  d   e   eS[         -  [         S-  s=:X  a  S:X  d   e   e[         [        -  [        [         [        5      :X  d   eS[         -  [         S-  s=:X  a  S:X  d   e   eS[         -  [         S-  s=:X  a  [         :X  d   e   e[         [        -  [        [         [        5      :X  d   e[         ) [	        [         5      :X  d   eS[         -	  [         S-  s=:X  a  [         :X  d   e   eS[         -	  [         S-  s=:X  a  S:X  d   e   e[         S-	  S[         -  s=:X  a  S:X  d   e   e[         S-	  S[         -  s=:X  a  [         ) :X  d   e   e[         [        -	  [        [         -  s=:X  a  [        [         [        5      :X  d   e   eS[         -  [         S-  s=:X  a  [         ) :X  d   e   eS[         -  [         S-  s=:X  a  [         :X  d   e   e[         [        -  [        [         [        5      :X  d   eg r   )rK   rL   r   r   r   r   r   rN   rO   rP   test_operatorsr<    s   !8q4x$1$$$$$19E	*U*****q5C1I!8q4x'4'''''19E	&Q&&&&&q5Bq!H2Q<<19T	&Q&&&&&A:e+t+++++9	)T))))):!)r)))))6Q!V,wq!},,,,,!8q4x%A2%%%%%19E	&Q&&&&&q5C1IrO   c                     [         [        R                   L d   e[        [        R                  L d   e[         SLd   e[        SLd   e[         (       d   e[        (       a   e[         S:X  d   e[        S:X  d   e[         S:X  a   e[        S:X  a   e[         [        :X  a   e[        [         5      [        S5      :X  d   e[        [        5      [        S5      :X  d   e[	        [         S15      [	        [        S15      s=:X  a  S:X  d   e   e[        [         [        5      (       d   e[        [        [        5      (       d   e[        [         [        5      (       a   e[        [        [        5      (       a   e[        [         5      [        L d   e[        S5      [        L d   e[        [        5      [         L d   e[        S5      [         L d   e[         ) [        L d   e[        ) [         L d   e[        S[         4S[        45       GH  u  p[        X5      [        L d   e[        X5      [        L d   e[        X5      [        L d   e[        X 5      [         L d   e[        U [        5      [        :X  d   e[        U[        5      [        L d   eU SL a  USL d  X-  [        L d   eX-  [        L d   eUSLa  X-  [        L d   eU SLa  X -  [         L d   e[        X5      [         L d   e[        X5      [         L d   e[        X5      [        L d   e[        X 5      [         L d   e[        U [        5      [         L d   e[        U[        5      [        :X  d   eU SL a  USL d  X-  [         L d   eX-  [         L d   eUSLa  X-  [        L d   eU SLa  X -  [         L d   e[        X5      [         L d   e[        X5      [         L d   e[        X5      [        L d   e[        X 5      [        L d   e[        U [        5      [        ) :X  d   e[        U[        5      [        :X  d   eU SL a  USL d  X-  [         L d   eX-  [         L d   eUSLa  X-  [        L d   eU SLa  X -  [        L d   e[        X5      [         L d   e[        X5      [         L d   e[        X5      [         L d   e[        X 5      [        L d   e[        U [        5      [        ) :X  d   e[        U[        5      [         L d   e[        X5      [        L d   e[        X5      [        L d   e[        X5      [         L d   e[        X 5      [        L d   e[        U [        5      [        L d   e[        U[        5      [        ) :X  d   e[!        X5      [        L d   e[!        X5      [         L d   e[!        X5      [         L d   e[!        X 5      [         L d   e[!        U [        5      [        :X  d   e[!        U[        5      [         L d   e[!        [        U 5      [         L d   e[!        [        U5      [        ) :X  d   eU SL a  USL d4  X-	  [        L d   eX-  [        L d   eX-	  [         L d   eX-  [         L d   eUSLa  X-	  [         L d   eX-  [         L d   eU SLa  X -	  [         L d   eX -  [         L d   e[#        X5      [        L d   e[#        X5      [        L d   e[#        X5      [         L d   e[#        X 5      [         L d   e[#        U [        5      [        :X  d   e[#        U[        5      [        ) :X  d   e[#        [        U 5      [        :X  d   e[#        [        U5      [        ) :X  d   e[%        X U 5      [         L d   e[%        X U5      [         L d   e[%        XU 5      [        L d   e[%        XU5      [        L d   e[%        XU 5      [         L d   e[%        XU5      [        L d   e[%        XU 5      [         L d   e[%        XU5      [        L a  GM   e   ['        S [        R                   [        R                  4 5       5      (       d   eg )NTFrS   c              3   H   #    U  H  oR                  S S5      UL v   M     g7f)rS   rV   Nr   r  rc   s     rP   r  "test_true_false.<locals>.<genexpr>^  s      @.?zz!Q1$.?s    ")r/   r	   r0   hashlenrk   r1   boolr   rI   r   rp   r   r   r   r   r   r   r   all)TFs     rP   test_true_falserG    sn   166>>AGGt4K4u94<<E>>:d###;$u+%%%d|UEN 38q88888dK((((e[))))
 $%%%%%&&&&
 t9t9u:u:5E>>6T>>tuen51yE!!!1yE!!!1yE!!!1yD   1ayA~~1ayE!!!T	a5j5E>!>5E>!>E>5E>!>D=5D= =!x4!x4!x5   !x4!Qx4!Qx1}}T	a5j5D= =5D= =E>5E>!>D=5D= =1yD   1yD   1yE!!!1yE!!!1ayQB1ayA~~T	a5j5D= =5D= =E>5E>!>D=5E>!>AzT!!!AzT!!!AzT!!!AzU"""AqzaRAqzT!!!1yE!!!1yE!!!1yD   1yE!!!1ayE!!!1ayQBq}%%%q}$$$q}$$$q}$$$q!}!!!q!}$$$q!}$$$q!}"""T	a5j6U?"?6U?"?6T>!>6T>!>E>6T>!>6T>!>D=6T>!>6T>!>!5(((!5(((!4'''!4'''!Q1$$$!QA2%%%!Q1$$$!QA2%%%1|t###1|t###1|u$$$1|u$$$1|t###1|u$$$1|t###1|u$$${ 6~ @qvvqww.?@@@@@rO   c                     [        [        S:*  S[        S:  5      R                  5       [        S[        5      :X  d   e[        [        S:*  [        S:  5      R                  5       [        SS5      :X  d   e[        [        S:  [        S:*  5      R                  5       [        [        * S5      [        S[        5      -   :X  d   e[        [        S:  5      R                  5       [        [        * S5      :X  d   e[        [        [        S:  [        S:  5      5      R                  5       [        [        [        * S5      [        S[        5      5      :X  d   e[        R                  " 5       [        R                  :X  d   e[        R                  " 5       [        R                  L d   e[        R                  5       [        R                  :X  d   e[        [        [        S:  [        S:  5      [        S:  5      R                  5       [        R                  " [        * S5      :X  d   e[        [        S:  [!        [        5      S:  5      R                  5       [        S:  R                  5       :X  d   e[#        [$        S 5        ['        S[)        S[        -  5      S-  [!        S[        -  5      S-  -  5      R                  5       [        R                  L d   eg )	Nr   FrS   rV   r   c                  B    [        [        5      S:  R                  5       $ r   )r   rp   as_setrN   rO   rP   rW   "test_bool_as_set.<locals>.<lambda>n  s    Q!(;(;(=rO   r   )r   rq   rK  r   r   r   rp   r   r   r   r/   r	   UniversalSetr0   EmptySetopenr   rD   r   r   r   rN   rO   rP   test_bool_as_setrP  a  s   qAvua1f%,,.(1b/AAAqAvqBw&&(HRO;;;a1fa2g%%'8RC+<x2+NNNNq1u:(B3"2222s1q5!a% !((*2#q!8Ar?34 4 4;;=ANN***<<>QZZ'''88:'''r!a%QQ'..0HMM2#q4IIIIq1uc!fqj!((*q1unn.>>>>
 =>b#a!e*/CAJ!O34;;=KKKrO   c            	         [        S5      u  p[        U S:  US:  5      R                  5       [        S[        5      [        S[        5      -  :X  d   e[        U S:  US:  5      R                  5       [        R                  [        R                  -  [        [        * SSS5      [        [        * SSS5      -  -
  :X  d   eg )Nr$  r   T)r   r   rK  r   r   r   r	   Realsr%  s     rP   test_multivariate_bool_as_setrS  s  s    5>DAqAvqAv%%'8Ar?Xa_+LLLLa1fa1f$$&!''AGG*;RCD$'(B34*FF+G G G GrO   c                     [        SSS9n U [        * :  U [        :*  4n[        U6 nUR                  [        L aE  [	        UR
                  5      [	        U5      UR                  [        R                  5      -
  :X  d   eOUS:X  d   e[        U6 nUR                  [        L a  [	        UR
                  5      S:X  d   eg US:X  d   eg )Nrp   T)extended_realrV   )
r   r   r   funcrB  argscountr	   r/   r   )rp   rW  vs      rP   test_all_or_nothingrZ  |  s    4(A8Q"WDT
Avv}166{c$i$**QVV*<<<<<Dyy
D	Avv|166{aDyyrO   c                  l    [         R                  [         :X  d   e[        R                  [        :X  d   eg ro   )r/   rZ   r0   rN   rO   rP   test_canonical_atomsr\    s&    >>T!!!??e###rO   c                  l    [         R                  [        :X  d   e[        R                  [         :X  d   eg ro   )r/   negatedr0   rN   rO   rP   test_negated_atomsr_    s&    <<5   ==D   rO   c                     [        [        S:  [        [        :  5      R                  5       [	        S[        SS9:X  d   e[        [        S:  [        [        :  5      R                  5       [	        S[        5      :X  d   e[        [        :  R                  5       [	        [        * [        5      :X  d   e[        [        * :  R                  5       [	        [        * [        5      :X  d   eg )NrV   T)	left_openrS   )r   rp   r   rK  r   rN   rO   rP   test_issue_8777rb    s    q1ua"f$$&(1bD*IIIIqAvq2v%%'8Ar?:::F??"b 1111G2#r!2222rO   c                      [        [        [        * [        :  [        S:*  5      [        S[        :*  [        [        :  5      5      R	                  5       [        [        * S5      [        S[        5      -   :X  d   eg )NrI  rV   )r   r   r   rp   rK  r   rN   rO   rP   test_issue_8975rd    s[    c2#'17#SaR%89@@BRCx2./ / /rO   c                  L    [        / SQ5      S:X  d   e[        S5      S:X  d   eg )N)rS   r   rS   r   r   rS   r   R   0010101000111001i9*  )r3   rN   rO   rP   test_term_to_integerrh    s*    01R777-.%777rO   c                     [        S5      u  pp#X-  U-  X-  -  nUR                  X-  U5      X-  U-  :X  d   eUR                  X-  U-  U5      X-  U-  :X  d   eX-  U-  X-  -  nUR                  X-  U5      X-  U-  :X  d   eUR                  X-  U-  U5      X-  U-  :X  d   eX-  U-  X-  -  nUR                  X-  U5      X-  U-  :X  d   eUR                  X-  U-  U5      X-  U-  :X  d   eg Nza b c d)r   r   )r[   r\   r]   r   r   s        rP   test_issue_21971rk    s   #JA!		AEA66!%quqy(((66!%!)Q1519,,,	
quA66!%{***66!%!)QAEQ;...	
quA66!%{***66!%!)QAEQ;...rO   c                     [        [        [        [        [        5      [        [        /SS95      / SQ:X  d   e[        [        [        [        -  [        [        /SS95      / SQ:X  d   e[        [        [        [        -	  [        [        /SS95      / SQ:X  d   e[        [        [        [        [        5      [        [        /5      5      SS/S4SS/S4SS/S4SS/S4/:X  d   eg )	NF)input)FFFT)FTTT)TTFTr   rS   T)listr4   r   rp   rq   rN   rO   rP   test_truth_tablero    s    C1I1vU;<&' ' 'AEAq678$% % %AFQF%89$% % %C1I1v./VUOq!fe_1vuoA~NO O OrO   c                  |  ^^ [         R                  [         R                  4 GH  m[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [         R
                  [         R                  [        4 H  m[        S5       H  n [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S	 j5        [        [        UU4S
 j5        [        [        UU4S j5        TTsmmM     M     GM     g )Nc                  
   > T 7$ ro   rN   r  s   rP   rW   !test_issue_8571.<locals>.<lambda>      1"rO   c                  
   > T * $ ro   rN   rr  s   rP   rW   rs    rt  rO   c                     > [        T 5      $ ro   )absrr  s   rP   rW   rs    	    #a&rO   c                     > [        T 5      $ ro   )intrr  s   rP   rW   rs    rx  rO   rV   c                     > T T-   $ ro   rN   or  s   rP   rW   rs    	    !a%rO   c                     > T T-
  $ ro   rN   r|  s   rP   rW   rs    r~  rO   c                     > T T-  $ ro   rN   r|  s   rP   rW   rs    r~  rO   c                     > T T-  $ ro   rN   r|  s   rP   rW   rs    r~  rO   c                     > T T-  $ ro   rN   r|  s   rP   rW   rs    r~  rO   c                     > T T-  $ ro   rN   r|  s   rP   rW   rs    s	    !q&rO   )	r	   r/   r0   rD   rY   Zeror   rp   range)_r}  r  s    @@rP   test_issue_8571r    s    ffaggy*%y*%y.)y.)&&!%%#A1Xy-0y-0y-0y-0y-0y.1!1  $ rO   c                  &   [        SSS9n [        SSS9u  pXU * U-  S-   -  -   X * U-  S-   -  -  S:  nU[        R                  Ld   eUR                  5       [        R                  L d   eUS:  R                  5       [        R                  L d   eg )NnT)negativezp q)positiverS   r   )r   r	   r0   expandr/   )r  pqrs       rP   test_expand_relationalr    s    d#A54(DA
A26A:
1Q
#3	4q	8AAGG88:   E>>qvv%%%rO   c                      [         R                  R                  S:X  d   e[         R                  R                  S:X  d   eg )NT)r	   r/   is_Atomr0   rN   rO   rP   test_issue_12717r    s.    66>>T!!!77??d"""rO   c                    ^ [        SSS9n [        S S[        R                  SU 4 5       5      (       d   e[        SSS9n[        S S	[        R                  S
U4 5       5      (       d   e[        S [
        [
        S
:  4 5       5      (       d   eS[        S5      [
        S-   / 4 H  m[        [        U4S j5        M     g )NnzT)nonzeroc              3   X   #    U  H   n[        U5      [        R                  L v   M"     g 7fro   )r5   r	   r/   r?  s     rP   r  "test_as_Boolean.<locals>.<genexpr>  s     F0E1z!}&0E   (*rS   ry   )r9  c              3   X   #    U  H   n[        U5      [        R                  L v   M"     g 7fro   )r5   r	   r0   r?  s     rP   r  r    s     H1GAz!}'1Gr  Fr   c              3   >   #    U  H  n[        U5      U:H  v   M     g 7fro   r5   r?  s     rP   r  r    s     6:az!}!:s   rV   c                     > [        T 5      $ ro   r  )rc   s   rP   rW   !test_as_Boolean.<locals>.<lambda>  s	    *Q-rO   )r   rD  r	   r/   r0   rp   rD   rY   )r  ry   rc   s     @rP   test_as_Booleanr    s    	t	$BFqvvq"0EFFFFF$AH%!Q1GHHHHH6Aq1u:666661q1ub!y/0 "rO   c                     [        [        S:  [        [        5      R                  [        [        1:X  d   e[
        [        4 Hl  n U " [        S5      R                  [        5       :X  d   eU " [        S5      R                  [        1:X  d   eU " [        S5      R                  [        1:X  a  Ml   e   [        R                  R                  [        5       :X  d   e[        R                  R                  [        5       :X  d   e[        R                  [        1:X  d   e[        [        [        [        S5      [        [        S5      5      R                  [        [        1:X  d   e[        R                  " [        5      R                  [        5       :X  d   e[        R                  " [        S5      R                  [        5       :X  d   e[        R                  " [        5      R                  [        1:X  d   e[        R                   " [        S5      R                  [        1:X  d   e[        R                  " [        5      R                  [        5       :X  d   eg )NrS   TF)r   rp   rq   ry   binary_symbolsr   r   setr	   r/   r0   r   r   primeltis_truer   )r   s    rP   test_binary_symbolsr    s   q1ua**q!f444"XAw%%...Dz((QC///E{))aS000  66  CE)))77!!SU***s"""q"Q,1a)88QFBBB771:$$---441:$$---99Q<&&1#---444=''A3...771:$$---rO   c                      [        [        [        5      R                  [        5      [	        S[        [        S5      4S5      :X  d   eg )Nr   F)rS   T)r   rp   rq   diffr   r   rN   rO   rP   test_BooleanFunction_diffr    s1    q!9>>!	1bEl*;Y GGGGrO   c                     [        S5      u  pp#pEpgX-  U-  U) -  X-  U) -  U) -  -  X-  U) -  U) -  -  X-  U) -  U) -  -  X-  U) -  U) -  -  X&-  U) -  U) -  -  X&-  U) -  U) -  -  X&-  U) -  U) -  -  X5-  U-  U) -  -  X5-  U) -  U) -  -  X-  U-  U) -  U) -  -  X4-  U-  U) -  U) -  -  X5-  U ) -  U) -  U) -  -  X5-  U ) -  U) -  U) -  -  X-  U-  U-  U) -  U) -  -  nX-  U-  U) -  X5-  U-  U) -  -  X-  U) -  U) -  -  X-  U) -  U) -  -  X&-  U) -  U) -  -  X&-  U) -  U) -  -  X&-  U) -  U) -  -  X5-  U) -  U) -  -  X4-  U-  U) -  U) -  -  X5-  U ) -  U) -  U) -  -  X-  U-  U-  U) -  U) -  -  n	X-  U-  X-  U-  -  X#-  U-  -  X%-  U-  -  X6-  U-  -  XV-  U-  -  X-  U) -  U) -  -  U) U) -  U) -  U) -  -  X1) -  U) -  U) -  U) -  -  X-  U) -  U) -  U) -  U) -  -  Xr) -  U) -  U) -  U) -  U) -  -  X-  U-  U ) -  U) -  U) -  U) -  -  n
[        US5      U	:X  d   e[        US5      U
:X  d   e/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/n/ S
Q/ SQ/ SQ/ SQ/n[        [        [        [
        [        /U5      [        [        ) -  [
        [        -  [        ) -  -  :X  d   e[        [        [        [
        [        /X5      [        [        ) -  [
        [        -  [        ) -  -  :X  d   eg )NzA B C D E F G Hdnfcnf)r   rS   r   r   r   )r   rS   rS   r   r   r   r   rS   r   r   r   rS   r   r   rS   )rS   rS   r   r   rS   rS   r   rS   )r   r)   r   rz   rp   rq   ry   )rK   rL   rM   rl   ErF  GHr  soldnfsolcnfr   r   s                rP   test_issue_14700r     sZ   $%67A!a
%!)qb.QUaRZ1"_	-!qb	A
%1"*r/
eqbjA2o
/23%1"*r/
C
%1"*r/
eqbjA2o
/23%!)qb.
B %1"*r/
  eai1"nr1
3 78eai1"nr6I
K %1"*r/QB
	
  $%5A2:?aR#7	
9
 %!)a-1"
r
!
#A uqyA2~!%!)qb.1QUaRZ1"_EurzQB #$5A2:?478urzQBHurzQB #$5A2:?478uqyA2~7JL urzQB!#% )*	A(:aR(?AF uqyQUQY'15195CuqyUQY(+,5A2:?<rQBw!|qb "%&Vqb[A2%5%:< urzQB!#qb(* ./Vqb[A2-=-BaR-GI uqyA2~"aR'1",	.F
 !U#v---!U#v---lL,l,H|\<HIAq!Q<*qA2v!a%1"*.EEEEAq!Q<5Fq1urz"# # #rO   c                  b    [        [        [        R                  5      n [	        U 5      U :X  d   eg ro   )r   rp   r	   Integersr)   )conds    rP   test_issue_25115r    s%    Aqzz"D$4'''rO   c                  j   [        SSS9u  pp#[        SSS9u  pE[        X:  X:  5      R                  5       [        R                  :X  d   e[        X:  X!:  5      R                  5       [        R                  :X  d   e[        X:  U* U* :  5      R                  5       [        R                  :X  d   e[        X:  U* U* :  5      R                  5       [        R                  :X  d   e[        U* U* :*  X:  5      R                  5       [        R                  :X  d   e[        U* U* :*  U* U* :  5      R                  5       [        R                  :X  d   e[        U* U* :*  X!:  5      R                  5       [        R                  :X  d   e[        U* U* :*  U* U* :  5      R                  5       [        R                  :X  d   e[        X!:*  X:  5      R                  5       [        R                  :X  d   e[        X!:*  X!:  5      R                  5       [        R                  :X  d   e[        X!:*  U* U* :  5      R                  5       [        R                  :X  d   e[        X!:*  U* U* :  5      R                  5       [        R                  :X  d   e[        U* U* :  X:  5      R                  5       [        R                  :X  d   e[        U* U* :  X!:  5      R                  5       [        R                  :X  d   e[        U* U* :  U* U* :  5      R                  5       [        R                  :X  d   e[        U* U* :  U* U* :  5      R                  5       [        R                  :X  d   e[        X:  X:  5      R                  5       [        R                  :X  d   e[        X!:  X:  5      R                  5       [        R                  :X  d   e[        U* U* :  X:  5      R                  5       [        R                  :X  d   e[        U* U* :  X:  5      R                  5       [        R                  :X  d   e[        X:  U* U* :*  5      R                  5       [        R                  :X  d   e[        U* U* :  U* U* :*  5      R                  5       [        R                  :X  d   e[        X!:  U* U* :*  5      R                  5       [        R                  :X  d   e[        U* U* :  U* U* :*  5      R                  5       [        R                  :X  d   e[        X:  X!:*  5      R                  5       [        R                  :X  d   e[        X!:  X!:*  5      R                  5       [        R                  :X  d   e[        U* U* :  X!:*  5      R                  5       [        R                  :X  d   e[        U* U* :  X!:*  5      R                  5       [        R                  :X  d   e[        X:  U* U* :  5      R                  5       [        R                  :X  d   e[        X!:  U* U* :  5      R                  5       [        R                  :X  d   e[        U* U* :  U* U* :  5      R                  5       [        R                  :X  d   e[        U* U* :  U* U* :  5      R                  5       [        R                  :X  d   e[        X:  X:  X:*  5      R                  5       [        R                  :X  d   e[        X:  X:  5      R                  5       [        R                  :X  d   e[        X:  [        X!5      5      R                  5       X:  :X  d   e[        X:  [        X!5      5      R                  5       [        X5      :X  d   e[        [        X5      US:  SU:  US:  X2:  5      R                  5       [        X5      US:  -  US:  -  X#:  -  :X  d   e[        [        X5      X:  X:  X2:  5      R                  5       X:  X#:  -  X:  -  :X  d   e[        [        X5      X:  X:  X#:  X2:  5      R                  5       [        X5      X#:  -  X:  -  :X  d   e[        [        X5      US:  SU:  US:  X2:  5      R                  5       [        X5      US:  -  US:  -  X#:  -  :X  d   e[        X5      [        XE5      -  X:  -  XE:  -  R                  5       [        X5      [        XE5      -  XE:  -  :X  d   e[        [        X5      [        X* 5      5      R                  5       [        [        US	5      [        US	5      5      :X  d   e[        X:  X:*  5      R                  5       [        X5      :X  d   e[        US:  US
:  [        X5      5      R                  5       [        R                  :X  d   e[        X:  [        US	5      5      R                  5       [        US	:  [        US	5      5      :X  d   e[        [        US5      [        US5      5      R                  5       [        R                  :X  d   e[        [        US5      [        SU5      5      R                  5       [        US5      :X  d   e[        [        US5      [        SU5      5      R                  5       [        US5      :X  d   eg )Nw x y zTreald eFrS   rV   r   r   r   )
r   r   r   r	   r/   r   r0   r   r   r   )rz   rp   rq   ry   r   r^   s         rP   test_relational_simplificationr  #  s%	   .JA!5u%DAafae%%'166111afae%%'166111afqbA2g'')QVV333afqbA2g'')QVV333qbQBh'')QVV333qbQBhaR ))+qvv555qbQBh'')QVV333qbQBhaR ))+qvv555afae%%'166111afae%%'166111afqbA2g'')QVV333afqbA2g'')QVV333qbQBh'')QVV333qbQBh'')QVV333qbQBhaR ))+qvv555qbQBhaR ))+qvv555aeQV%%'166111aeQV%%'166111qbA2gqv'')QVV333qbA2gqv'')QVV333aeaRA2X'')QVV333qbA2graRx ))+qvv555aeaRA2X'')QVV333qbA2graRx ))+qvv555aeQV%%'166111aeQV%%'166111qbA2gqv'')QVV333qbA2gqv'')QVV333aeaRA2X'')QVV333aeaRA2X'')QVV333qbA2graRx ))+qvv555qbA2graRx ))+qvv555 afaeQV$--/166999qvqu&&(AGG333afbh((*qv666qvr!x ))+r!x777r!xaQQ6??AqHQ16*ae46 6 6bhqu-668Fqu'( ( (r!x6??Aa8qu'( ( ( r!xaQQ6??AqHQ16*ae46 6 6qHr!x16*af5??AqHr!x16*, , ,r!xAr#,,.#bAh1a2IIIIqvqv'')RX555q1ua"fbh'002agg===qvr!Qx ))+s162a8/DDDDbAh1a!**,666r!QxAq"++-Aq999bAh1a!**,1a888rO   c                     [        SSS9n [        U S:  U S:  5      R                  5       [        R                  :X  d   e[        U S:  U S:  5      R                  5       [        R                  :X  d   e[        U S:  U S:  5      R                  5       [        R                  :X  d   e[        U S:*  U S:  5      R                  5       [        R                  :X  d   eg )Nrp   Tr  rS   r   )r   r   r   r	   r/   r   r0   rp   s    rP   test_issue_8373r  f  s    $Aa!eQV%%'166111a!eQ!V%%'166111q1ua1f&&(AGG333a1fa1f&&(AFF222rO   c                      [        SSS9n [        [        U S5      [        U S5      5      R                  5       [        R
                  :X  d   eg )Nrp   Tr  rS   rV   )r   r   r   r   r	   r0   r  s    rP   test_issue_7950r  n  s<    $Ar!QxAq"++-888rO   c                  X   S n [        SSS9u  pp4[        SSS9u  pV[        [        X#5      X#:  X:  X4:  XC:  5      [        [        X#5      US:  SU:  US	:  XC:  5      [        [        X#5      US:  SU:  US	:  XC:  5      [        X#:  [        X25      5      [        [        [        X#5      X#:  X:  [        X4:  XC:  5      5      [        [        X#5      US:  SU:  US
:  XC:  5      5      [        X#5      [        XV5      -  X#:  -  XV:  -  4nU H  nU " UUR	                  5       5        M     g )Nc                 X   U R                   n[        U5      n[        [        [	        [        [        US-
  * U5      5      U-  U5      5      5      nU HU  n[        [        X%5      5      nU R                  U5      nUR                  U5      nXx:X  a  M@   SR                  XU5      5       e   g )NrS   zHOriginal: {}
and simplified: {}
do not evaluate to the same value for {})
free_symbolsrB  rn  r  rG   r  dictr   r   format)	original
simplifiedsymbr  	valuelistvaluessublistoriginalvaluesimplifiedvalues	            rP   (test_simplification_numerically_function\test_relational_simplification_numerically.<locals>.test_simplification_numerically_functionu  s    $$I\$uq1uXq/A*BQ*FJKL	F3t,-G$MM'2M(oog6O 3 ^ 688>xU\8]^3	  rO   r  Tr  r  FrS   rV   r   r   )r   r   r   r   r   )	r  rz   rp   rq   ry   r   r^   expressions
expressions	            rP   *test_relational_simplification_numericallyr  s  s+   
^ .JA!5u%DAr!x>r!xaQQ>bhQAqAvqu=qvr!x(c"Q(AFAE2afae3DE"Q(AFAE17AEBDqHr!x'162af=K "
01;1D1D1F	H "rO   c                     SSK Jn   SSKJnJnJn  U " S5      nU " S5      nU " S5      nXEU/n[        U" 5       /[        U" 5       /[        U" 5       //n[        [        [        [        [        SS5      5      S-  S5      5      5      n	U	 V
s/ s H.  n
[        S	 U
 5       5      (       d  [        U
5      (       a  M,  U
PM0     n	n
U H  u  pU H{  nU" US   R                  6 nUS
   nU	 H[  n[        [!        UU5      5      nUR#                  U5      nUR#                  U5      nUU:X  a  MB   SR%                  US   UU5      5       e   M}     M     g s  sn
f )Nr   Wild)_simplify_patterns_and_simplify_patterns_or_simplify_patterns_xorr[   r\   r]   rI  r   c              3   *   #    U  H	  oS -  v   M     g7frV   NrN   r  rz   s     rP   r  Ftest_relational_simplification_patterns_numerically.<locals>.<genexpr>       ,>AqUA   rS   GOriginal: {}
and simplified: {}
do not evaluate to the same value for{})
sympy.corer  sympy.logic.boolalgr  r  r  r   r   r   rn  r  rG   r  anyrW  r  r   xreplacer  )r  r  r  r  r[   r\   r]   r  patternlistsr  rY  rV  patternlistpatternr  r  r  r  r  r  s                       rP   3test_relational_simplification_patterns_numericallyr    sS   6 6S	AS	AS	A!9D023.010235L Sd5Q<&81&<a@ABI%MIq,>A,>)>)>c!fIIM)"GWQZ__-H J#s401 ( 1 1' :","5"5g">$7 f :>>DfWQZQ[]d>ef7	 $ # * Ns   +E:Ec                      [        S5      n U S:  U S:  -  U S:  U S:  -  -  R                  5       U S:  U S:  -  U S:  U S:  -  -  :X  d   eg )Nr  r   r   )r   r   )r  s    rP   test_issue_16803r    sg    AUq1u!a%AE!23==?Ea!eQ1q5 123 3 3rO   c                    ^  [         [        [        [        0m [        [         [        -   S:  [         [        -
  S:  5      R	                  T 5      (       d   e[        [         [        -   S:  [         [        -
  S:  5      R	                  T 5      (       a   e[        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        g )Nr   c                  r   > [        [        [        -   S:  [        [        -
  S:  5      R                  T 5      $ Nr   )r   rp   rq   r   r  s   rP   rW   "test_issue_17530.<locals>.<lambda>  s'    bQAEAI6;;A>rO   c                  r   > [        [        [        -   S:  [        [        -
  S:  5      R                  T 5      $ r  r   rp   rq   r   r  s   rP   rW   r    '    c!a%!)QUQY7<<Q?rO   c                  r   > [        [        [        -   S:  [        [        -
  S:  5      R                  T 5      $ r  r  r  s   rP   rW   r    r  rO   )rp   r   rq   r   r   r   rD   rY   r  s   @rP   test_issue_17530r    s    	
B2Aa!eaiQ#((++++1q519a!eai(--a0000
9>?
9?@
9?@rO   c                  *   [        SS/5      SS/:X  d   e[        / SQ5      / SQ:X  d   e[        / SQ5      / SQ:X  d   e[        / SQ5      / SQ:X  d   e[        / SQ5      / SQ:X  d   e[        / SQ5      / SQ:X  d   e[        / S	Q5      / S
Q:X  d   eg )NrS   r   r   r   rS   rS   rS   r   r  r  r   r  r   )r9   rN   rO   rP   test_anf_coeffsr    s    q!f!Q'''l#|333l#|333l#|333l#|333l#|333l#|333rO   c                      [        S5      u  p[        U /SS/5      S:X  d   e[        U /SS/5      S:X  d   e[        U /SS/5      [        U SSS9:X  d   e[        X// SQ5      [        S[        X5      SS9:X  d   eg )Nr$  rS   Tr   Fr   r  )r   r:   r   r   r%  s     rP   test_ANFformr    s    5>DAA3A4'''A3A5(((A3A3q$E#BBBBA6<(tSYE23 3 3rO   c                      [        S5      u  p[        SX/5      [        X5      :X  d   e[        SS/X/5      [        [        U5      U 5      :X  d   eg )Nr$  r   rS   r   )r   r;   r   r   r%  s     rP   test_bool_mintermr    sM    5>DAA6"c!i///A'3s1vq>999rO   c                      [        S5      u  p[        SX/5      [        [        U 5      U5      :X  d   e[        SS/X/5      [        [        U5      U 5      :X  d   eg )Nr$  rV   r   rS   )r   r<   r   r   r%  s     rP   test_bool_maxtermr     sS    5>DAA6"bQm333A'2c!fa=888rO   c                      [        S5      u  p[        SX/5      U:X  d   e[        SS/X/5      [        X5      :X  d   eg )Nr$  rS   )r   r=   r   r%  s     rP   test_bool_monomialr    sC    5>DAQF#q(((!Q!(CI555rO   c                  \    [        / SQ/ SQ5      S:X  d   e[        / SQ/ SQ5      S:X  d   eg )Nr   r   rV   r   r   )r>   rN   rO   rP   test_check_pairr    s,    y),111y),222rO   c                      [         [        -  [        [        ) -  -  [        ) [         ) -  -  n [        [         -  [        [        ) -  -  [         ) [        ) -  -  n[        U SS9nX U4;   d   eg r   )rL   rM   rK   r,   )rt   res1results      rP   test_issue_19114r    s`    Ea1"f!qb)DEa1"f!qb)DD4(FD\!!!rO   c                  &   [        [        [        [        [        // SQ5      n [        [        ) -  [        [        -  [        -  -  [        [        ) -  [        ) -  -  [        [        ) -  [        ) -  -  [        [        ) -  [        ) -  -  nX:X  d   eg )N)rS   rV   r   r  r         	   r         r   )r   r[   r\   r]   r   )r  expecteds     rP   test_issue_20870r    st    aAq\#KLFaRAEAI&!qb&A2+6aR1"!"aR1".HrO   c                     [        / SQ[        [        [        /5      [	        [        [        5      [        [        [        5      5      :X  d   e[        / SQ[        [        [        /5      [	        [        [        [        5      5      :X  d   eg Nr   )r   rS   r   )r?   rp   rq   ry   r   r   rN   rO   rP   test_convert_to_varsSOPr    sS    y1a)4CFAs1v8NNNNy1a)4As1vFFFrO   c                     [        / SQ[        [        [        /5      [	        [        [        [        5      [        5      :X  d   e[        / SQ[        [        [        /5      [	        [        [        5      [        5      :X  d   eg r  )r@   rp   rq   ry   r   r   rN   rO   rP   test_convert_to_varsPOSr    sO    y1a)41c!fa8HHHHy1a)43q61EEErO   c                     ^^ [        S5      u  mmpn[        [        TT5      5      S:X  d   e[        TTU -  U-  UT-  -  -  5      S:X  d   e[        [        TS5      5      S:X  d   e[        [        UU4S j5        g )Nza:erV   r  Tr   c                      > [        T T-  5      $ ro   )rB   )r[   r\   s   rP   rW   %test_gateinputcount.<locals>.<lambda>  s    nQU3rO   )r   rB   r   rD   rY   )r]   r   r^   r[   r\   s      @@rP   test_gateinputcountr     sz    ENMAq!#a)$)))!a!eai1q5112a777#a,'1,,,
934rO   c                     [        [        S:  [        S:  ) 5      (       a   e[        [        S:  [        S:  5      (       d   e[        [        S:  S[        :  5      [        R                  L d   e[        [        S:  [        S:  5      [        S:  :X  d   e[        [        S:*  [        S:*  ) 5      (       a   e[        [        S:*  [        S:*  5      (       d   e[        [        S:*  S[        :  5      [        R                  L d   e[        [        S:*  [        S:*  5      [        S:*  :X  d   e[        [        S:  [        S:  ) 5      (       a   e[        [        S:  [        S:  5      (       d   e[        [        S:  S[        :  5      [        R                  L d   e[        [        S:  [        S:  5      [        S:  :X  d   e[        [        S:  [        S:  ) 5      (       a   e[        [        S:  [        S:  5      (       d   e[        [        S:  S[        :*  5      [        R                  L d   e[        [        S:  [        S:  5      [        S:  :X  d   e[        [        [        S5      [        [        S5      ) 5      (       a   e[        [        [        S5      [        [        S5      5      (       d   e[        [        [        S5      [        S[        5      5      [        R                  L d   e[        [        [        S5      [        [        S5      5      [        [        S5      :X  d   e[        [        [        S5      [        [        S5      ) 5      (       a   e[        [        [        S5      [        S[        5      5      [        R                  L d   e[        [        [        S5      [        [        S5      5      (       d   e[        [        [        S5      [        [        S5      5      [        [        S5      :X  d   e[        [        [        S:  [        S:  5      [        S:  5      [        S:  :X  d   e[        [        [        S:  [        S:  5      [        S:  [        S:  -  5      [        R                  L d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  L d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  L d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   eg r  )r   rp   r	   r/   rq   r   r   r   r   r  r  r0   r  rN   rO   rP   test_refiner    s   a!eq1uX&&&&!a%!a%!!!!!a%!a%!QVV+++!a%!a%!a!e,,,a1fQi((((!q&16####!q&16#qvv---!q&16#Q///a!eq1uX&&&&!a%!a%!!!!!a%!a%!QVV+++!a%!a%!a!e,,,a1fQi((((!q&16####!q&16#qvv---!q&16#Q///bAh"Q(,,,,"Q(R1X''''"Q(R1X'166111"Q(R1X'2a8333bAh"Q(,,,,"Q(R1X'166111"Q(R1X''''"Q(R1X'Bq!H555 #a!eQU#a!e-!a%888#a!eQU#a!eA%67166AAA !**Q-A/166999!**Q-A/177:::!**Q-+qzz!}<<<rO   c                  l   SSK Jn   SSKJn  U " S5      nU " S5      nU " S5      nX#U/n[        U" 5       //n[        [        [        [        [        SS5      5      S-  S5      5      5      nU Vs/ s H.  n[        S	 U 5       5      (       d  [        U5      (       a  M,  UPM0     nnU H  u  pU
 Hy  nU	" US   R                  6 nUS
   nU HY  n[        [        X^5      5      nUR                  U5      nUR                  U5      nUU:X  a  MA   SR                  US   X5      5       e   M{     M     g s  snf )Nr   r  )_simplify_patterns_and3r[   r\   r]   rI  r   c              3   *   #    U  H	  oS -  v   M     g7fr  rN   r  s     rP   r  Ptest_relational_threeterm_simplification_patterns_numerically.<locals>.<genexpr>7  r  r  rS   r  )r  r  r  r  r   rn  r  rG   r  r  rW  r  r   r  r  )r  r  r[   r\   r]   r  r  r  rY  rV  r  r  r  r  r  r  r  r  s                     rP   =test_relational_threeterm_simplification_patterns_numericallyr   -  s+   ;S	AS	AS	A!9D1345LSd5Q<&81&<a@ABI%MIq,>A,>)>)>c!fIIM)"GWQZ__-H J#s401 ( 1 1' :","5"5g">$7 f :>>DfWQZQ[>ef7	 $ # * Ns   /+D1D1c                     [        [        [        [        5      [	        [        [
        5      5      n [        U [         5      (       d   e[        U R                  5      [        [        [        5      [	        [        [
        5      1:X  d   eg ro   )	r   r   r[   r]   r   r\   rk   r  rW  r  s    rP   test_issue_25451r"  E  sT    
3q!9bAhAaqvv;3q!9bAh////rO   c                  h   [        S5      u  pp#[        U[        X5      [        X5      5      n[        X[        X5      5      n[        [        U[        XE5      5      [        XE5      5      n[        [        [        [        U[        XE5      5      5      [        XE5      5      5      nXs:X  d   eXc:X  d   eg rj  )r   r   r   r6   )r[   r\   r]   r   rp   rq   r  
result_anfs           rP   test_issue_26985r%  K  s    #JA! 	As1y#a)$AA#a)A QA	"CI.FF3q#a)#45s1yABJ??;;rO   N)sympy.assumptions.askr   sympy.assumptions.refiner   sympy.core.numbersr   sympy.core.relationalr   r   r   sympy.core.singletonr	   sympy.core.symbolr
   r   sympy.functionsr   (sympy.functions.elementary.trigonometricr   r   sympy.sets.setsr   r   sympy.sets.containsr   sympy.simplify.simplifyr   r  r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   sympy.assumptions.cnfrC   sympy.testing.pytestrD   rE   rF   	itertoolsrG   rH   rI   rK   rL   rM   rl   r[   r\   r]   r   r^   rz   rp   rq   ry   rQ   rd   rh   rm   ru   rw   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r&  r(  r*  r-  r7  r:  r<  rG  rP  rS  rZ  r\  r_  rb  rd  rh  rk  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r   r"  r%  rN   rO   rP   <module>r4     s   # + ! 2 2 " . % = + ( ,
 
 
 
 
 
 
 
 
 
 
 
 
 & 4 4 9 9U^
1a#I. 1aAq!Q	J0),924
3
9
2
(('$>(0?q(h@2	"$
4&*5''S..;8" 
68>"/+	L))+4\%&CALL$ G G$
!
3/
8
/O&&#
1."H#:(@9F39
 H H<f63A43:963
"G
F
5"=Jf00rO   