o
    à8Va³  ã                	   @   s<  d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH d dlImJZJ d dlKmLZLmMZMmNZN d dlOmPZP d dlQmRZRmSZS ed\ZTZUZVZWed\	ZXZYZZZ[Z\Z]Z^Z_Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgd d! Zhd"d# Zid$d% Zjd&d' Zkd(d) Zld*d+ Zmd,d- Znd.d/ Zod0d1 Zpd2d3 Zqd4d5 Zrd6d7 Zsd8d9 Ztd:d; Zu	 d<d= Zvd>d? Zwd@dA ZxdBdC ZydDdE ZzdFdG Z{dHdI Z|dJdK Z}dLdM Z~dNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm ZeMdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z eNdd Z¡dd Z¢dd Z£dd Z€dd Z¥dd ZŠdd Z§d d¡ Zšd¢d£ Z©d€d¥ ZªdŠd§ Z«dšd© Z¬dªd« Z­d¬d­ Z®d®d¯ Z¯d°S )±é    )ÚQ)Úrefine)Úoo)ÚEqualityÚEqÚNe)ÚS)ÚDummyÚsymbols)Ú	Piecewise)Úsin)ÚEmptySetÚIntervalÚUnion©Ú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Úinteger_to_termÚ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)ÚCNF)ÚraisesÚXFAILÚslow)Úcartes)ÚcombinationsÚpermutationszA:Dza:e w:zc                   C   s€   t t@ tt tksJ t tB tt tksJ t t@ tB ttt ttks&J t t? tt tks1J t t> ttt ks<J t  tt ksEJ t tA tt tksPJ dS )z)Test that |, & are overloaded as expectedN)ÚAÚBr   r   ÚCr   r   r   © rK   rK   ú@/usr/lib/python3/dist-packages/sympy/logic/tests/test_boolalg.pyÚtest_overloading    s    rM   c                  C   sÞ  t  tu sJ t ttksJ t dtu sJ t dtu sJ t ddtu s(J t ddtu s1J t ddtu s:J t dttksCJ t dttu sLJ t dddtu sVJ t ddttks`J t ddttu sjJ t dttkssJ ttdd  ttdd  t tdk tdktu sJ tdk} t | | j| jksJ ttkttk ttkttkf\}}}}t ||||t ||ksœJ dd t||||fD t ||hksÒJ t t t	t
d	t	td	t tt
d	t	td	tu síJ d S )
NTFé   c                   S   ó
   t dtS ©Né   ©r   rH   rK   rK   rK   rL   Ú<lambda>:   ó   
 ztest_And.<locals>.<lambda>c                   S   ó   t tdk tS rP   rR   rK   rK   rK   rL   rS   ;   ó    c                 S   s   h | ]}t | qS rK   )r   ©Ú.0ÚirK   rK   rL   Ú	<setcomp>A   ó    ztest_And.<locals>.<setcomp>r   )r   r-   rH   r.   rB   Ú	TypeErrorÚ	canonicalrI   rG   r   ÚaÚbr   Úc©ÚeÚgÚlÚgeÚlerK   rK   rL   Útest_And,   s,   $*:rg   c                  C   s|  t  tu sJ t ttksJ t dtu sJ t dtu sJ t ddtu s(J t ddtu s1J t ddtu s:J t dttu sCJ t dttksLJ t dddtu sVJ t ddttu s`J t ddttksjJ t dttu ssJ ttdd  ttdd  t tdk tdktu sJ tdk} t | | j| ksJ ttkttk ttkttkf\}}}}t ||||t ||ksŒJ d S )NTFrN   c                   S   rO   rP   ©r   rH   rK   rK   rK   rL   rS   S   rT   ztest_Or.<locals>.<lambda>c                   S   rU   rP   rh   rK   rK   rK   rL   rS   T   rV   )r   r.   rH   r-   rB   r\   r]   rI   ra   rK   rK   rL   Útest_OrE   s(   $ ri   c                  C   s  t  tu sJ t ttksJ t tttu sJ t dtttu s"J t ttttttks.J t dddttt tt ks>J t dtu sFJ t dtu sNJ t ddtu sWJ t ddtu s`J t ddtu siJ t dtt kssJ t dttks|J t dddtu sJ t ddtt ksJ t ddttksJ tt ttt s¥J t ttt ttt ttttks·J t ttt ttt ttksÇJ t tdk tdktt ddt  krât ddtksåJ  J tdk} t | | jt dd  krÿt ddksJ  J d S ©NTFrN   r   )	r   r.   rH   r-   rI   Ú
isinstancerJ   ÚDr]   )rb   rK   rK   rL   Útest_Xor\   s,    $ <6rm   c                  C   s.   t tA } |  t¡t tB t  t B @ ksJ d S ©N)ÚxÚyÚrewriter   ©ÚexprrK   rK   rL   Útest_rewrite_as_Andu   ó   &rt   c                  C   s.   t tA } |  t¡t t @ tt  @ B ksJ d S rn   )ro   rp   rq   r   rr   rK   rK   rL   Útest_rewrite_as_Orz   ru   rv   c                  C   s<   t t@ tt @ B } |  t¡t t@  tt @  @  ksJ d S rn   )rp   ÚzÚwrq   r   rr   rK   rK   rL   Útest_rewrite_as_Nand   s   *ry   c                  C   s4   t tt B @ } |  t¡t  tt B  B  ksJ d S rn   )rw   rp   rx   rq   r   rr   rK   rK   rL   Útest_rewrite_as_Nor   s   &rz   c                   C   sb   t tdd  tdtu sJ tdtu sJ tdtu sJ tdtu s'J tdtu s/J d S )Nc                   S   s
   t ddS ©NTF)r   rK   rK   rK   rL   rS      rT   ztest_Not.<locals>.<lambda>TFr   rN   rQ   )rB   r\   r   r.   r-   rK   rK   rK   rL   Útest_Not   s   r|   c                   C   sÞ   t  tu sJ t tt ksJ t dtu sJ t dtu s J t ddtu s)J t ddtu s2J t ddtu s;J t dtt ksEJ t dttu sNJ t dddtu sXJ t ddtt kscJ t ddttu smJ d S r{   )r   r.   rH   r-   rK   rK   rK   rL   Ú	test_Nand   s   r}   c                   C   sÜ   t  tu sJ t tt ksJ t dtu sJ t dtu s J t ddtu s)J t ddtu s2J t ddtu s;J t dttu sDJ t dtt ksNJ t dddtu sXJ t ddttu sbJ t ddttu slJ d S r{   )r   r-   rH   r.   rK   rK   rK   rL   Útest_Nor¡   s   r~   c                   C   s  t  tu sJ t tt ksJ t tttu sJ t dtttu s#J t tttttt ks0J t dtu s8J t dtu s@J t ddtu sIJ t ddtu sRJ t ddtu s[J t dttksdJ t dtt ksnJ t dddtu sxJ t ddttksJ t ddtt ksJ d S r{   )r   r-   rH   r.   rK   rK   rK   rL   Ú	test_Xnor°   s   r   c                   C   sê   t tdd  tddtu sJ tddtu sJ tddtu s"J tddtu s+J tdttu s4J tddtu s=J tddtu sFJ tt? tt> ksPJ tdk tdk? tdkks^J tdk tjtk? tu skJ tt? tu ssJ d S )Nc                   S   s   t tttS rn   )r   rH   rI   rJ   rK   rK   rK   rL   rS   Ã   ó    ztest_Implies.<locals>.<lambda>TFr   rN   )	rB   Ú
ValueErrorr   r-   r.   rH   rI   r   ÚOnerK   rK   rK   rL   Útest_ImpliesÂ   s   r   c                   C   s
  t ttt tt  krt tttksJ  J t  tu sJ t ttt t  kr/tu s2J  J t ddt dd  krCtu sFJ  J t ddt dd  krWtu sZJ  J t tdtkscJ t tdttksnJ t ttdtt@ kszJ t ttdt t @ ksJ t dttksJ t dtttksJ t tt ttt t tttks®J t tdk tdktu s»J t tdk tdkdtu sÉJ t tdk tdkdtu s×J t tdk tjtkt dd  krðt ddksóJ  J t t	ttt	tttu sJ d S rj   )
r   rH   rI   r-   r.   r   rJ   r   r   r   rK   rK   rK   rL   Útest_EquivalentÑ   s"   0&(($8$r   c                   C   sT   t dddtu s
J t dddtu sJ t dddtu sJ t dddtu s(J d S )NFT)r@   r-   r.   rK   rK   rK   rL   Útest_Exclusiveå   s   r   c                   C   sÒ   t ttt tt tt t¡du sJ ttt tt? tt? @ ¡du s'J tt B t tB @  t t @ tt@ B ¡du s@J tt?  t t ? ¡du sOJ ttt? ?  ttt? ? ¡du s`J tt	dd  d S )NTFc                   S   s   t t@  t tk¡S rn   )rH   rI   ÚequalsrK   rK   rK   rL   rS   ò   ó    ztest_equals.<locals>.<lambda>)
r   r   rH   rI   r   r   r   rJ   rB   ÚNotImplementedErrorrK   rK   rK   rL   Útest_equalsì   s   *$2"r   c               	      sD	  g d¢g d¢g d¢g d¢g} g d¢g d¢g d¢g d¢g}t tttg| tttttttttks5J tt tttg|ttttttttttksRJ ttttg| | tu s`J t tttg| | tu snJ t t	 t	 t	 g| | tu sJ g d	¢g d
¢g d¢g d¢g d¢g g d¢g d¢g d¢g}t t
tttg |ttttttt
ttks¶J tt
tttg |tttt
ttksÌJ g d¢ g d¢}t t
tttg |ttttttt
ttksïJ tt
tttg |tttt
ttksJ dg d
¢dg d¢g d¢g dg d¢dg}t t
tttg |ttttttt
ttks6J tt
tttg |tttt
ttksMJ dtdtdig dg d¢dg}t t
tttg |ttttttt
ttksxJ tt
tttg |tttt
ttksJ tdtdidg g d¢g}g d¢g tt fdd tt fdd ttdd  ttttt}ttttB @ |ksÏJ ttt@ tt@ B |ksÞJ ttttttttksïJ tttttttttttttksJ ttttdttttdtksJ ttttdttju s-J ttttdttttdtksBJ tttttttttttksWJ tttttdttttdttttdtttksxJ t t @ t @ t t @ t@ B }tt|}t|tt @ t @ ksJ ttdd  td\	}}}}}}	}
}}||@ |@ |@ |@ |	@ |
@ |@ |@ ||@ |@ |@ |@ |	@ |
@ |@ | @ B }t||ksßJ t ttgddgg}t ttgddgg|ksøJ tttgddgg|ksJ ttdd  t tgdggdggtu sJ t tgdggdggtu s.J t tgg g tu s:J ttd d  ttgdggdggtu sQJ ttgdggdggtu saJ ttgg g tu smJ ttt@ tt@ B tttttksJ tttttd!ksJ tttttd"ksJ ttttdttttttdttdks¹J tttd dttt ¡ tttdttdksÖJ tttd dttt ¡ tttdtttksóJ tttd dttt ¡ tttdttdksJ tttd dtttt ttt d ¡ tttdttd#ttdks9J tttd dttd d ¡ ttdksRJ tttd dttd d ¡ ttdkskJ tttd dttd d ¡ d!ksJ tttd dttd d ¡ tttdttdks J d$S )%z1
    Test working of simplification methods.
    ©r   r   rN   ©r   rN   rN   ©rN   r   r   )rN   rN   r   )r   r   r   ©r   rN   r   ©rN   r   rN   ©rN   rN   rN   ©r   r   r   rN   ©r   r   rN   rN   ©r   rN   rN   rN   ©rN   r   rN   rN   ©rN   rN   rN   rN   )r   r   r   r   )r   r   rN   r   ©r   rN   r   rN   )rN   é   é   é   é   )r   rQ   é   rN   r   r   r   c                      ó   t ttttg S rn   )r   rx   ro   rp   rw   rK   ©ÚmintermsrK   rL   rS   %  r   z%test_simplification.<locals>.<lambda>c                      r   rn   ©r   rx   ro   rp   rw   rK   r   rK   rL   rS   &  r   c                   S   s   t ttttgdgS )NZabcdefgr   rK   rK   rK   rL   rS   (  r[   rQ   r   c                   S   s   t tttB @ ddS )NZblabla)Zform)r'   rH   rI   rJ   rK   rK   rK   rL   rS   :  r[   za b c d e f g h jc                   S   ó   t tgdggdggS ©NrN   )r   ro   rK   rK   rK   rL   rS   I  ó    c                   S   r   r    )r   ro   rK   rK   rK   rL   rS   N  r¡   FTéÿÿÿÿN)r   ro   rp   rw   r   r   r   r   r-   r	   rx   rB   r   r\   rH   rI   rJ   r'   r   r   r   r   r.   r
   r   r   r   )Zset1Zset2Ú	dontcaresZansr_   rb   r^   r`   ÚdÚfrc   ÚhÚjrs   rK   r   rL   Útest_simplificationõ   sÂ   2 ÿ"ÿÿÿ,ÿÿ.ÿÿÿ.ÿÿ.

"
ÿ* **$
ÿ"
"$ÿ    *6:::,
ÿ22, ÿrš   c               
   C   sÜ  g d¢g d¢g d¢g d¢g d¢g} t tttttttifks"J t tttttg| tttttg| t	t
tttt
ttttttttttttifksQJ t ttttgg d¢gttttgg d¢gdkslJ ttttgg d¢g d¢g}ttttgg d¢g d	¢g}t |||ttttifksJ t tttttt dks§J t t	ttt
ttd
u s¶J t t	ttt	tttd
u sÆJ t tttttttt dksØJ t tttttttttt dksìJ d
S )z,
    Test working of bool_map function.
    r   r   r   r   r   r   Fr   r   N)r,   r   r^   r   rx   ro   rp   rw   r   r   r   r_   r`   r   )r   Z	function1Z	function2rK   rK   rL   Útest_bool_mapd  s0   ÿ"ÿ2þÿÿÿ  $,r©   c                   C   st   t tdtks	J t tddtksJ t tdtu sJ t tddtu s&J ttdtu s/J ttdtks8J dS )zBTest that mixing symbols with boolean values
    works as expectedTFN)r   rH   r.   r   r-   rK   rK   rK   rL   Útest_bool_symbol}  s   rª   c                   C   sÞ   t dtdu s	J t ttdu sJ ddksJ dtksJ dtkdu s&J ddks,J dtks2J dtkdu s:J tjdu sAJ tt@ jsHJ ttB jsOJ t jsUJ ttA js\J tjt ttksfJ t ttsmJ d S rj   )rk   r   r-   r.   Z
is_BooleanrH   rI   rK   rK   rK   rL   Útest_is_boolean  s   r«   c                   C   s   t t@  t d¡tksJ t t@  t d¡tu sJ t t@  td¡t ks$J t t@  td¡tu s0J t t@  t dtdi¡tu s?J t tB  t d¡tu sKJ t tB  t d¡tksWJ t tB  td¡tu scJ t tB  td¡t ksoJ t tB  t dtdi¡tu s~J d S r{   )rH   rI   Úsubsr.   r-   rK   rK   rK   rL   Ú	test_subs  s   "r­   c                  C   s>   t ttd\} }| |@ || @ ksJ | |B || B ksJ dS )z$Test for commutativity of And and OrzA,BN)Úmapr   r
   )rH   rI   rK   rK   rL   Útest_commutative®  s   r¯   c                   C   s    t t@ t@ t tt@ @ ksJ dS )zTest for associativity of AndN©rH   rI   rJ   rK   rK   rK   rL   Útest_and_associativity¶  s    r±   c                   C   s    t tB tB t ttB B ksJ d S rn   r°   rK   rK   rK   rL   Útest_or_assicativityŒ  s    r²   c                  C   s   t  } |   | ksJ d S rn   )r   )r^   rK   rK   rL   Útest_double_negationÀ  s   r³   c                   C   s   t tttddt tB ksJ t tttt? ? ttttttttks*J t tttttt tB t tB @ t tB @ t tB @ ksIJ d S )NF©Zevaluate)	r#   r   rH   rI   rJ   r   r   r   rl   rK   rK   rK   rL   Útest_eliminate_implicationsÇ  s    ÿÿ&ÿrµ   c                   C   sx   t tt@ t@ ttthksJ t ttB t@ ttB thksJ t tthks(J t ddhks1J t ddhks:J d S r{   )r   rH   rI   rJ   rK   rK   rK   rL   Útest_conjunctsÏ  s
    r¶   c                   C   sz   t ttB tB ttthksJ t ttB t@ ttB t@ hks J t tthks)J t ddhks2J t ddhks;J d S r{   )r    rH   rI   rJ   rK   rK   rK   rL   Útest_disjuncts×  s
   "r·   c                   C   s   t ttttttttttttksJ tttttttttttttks.J tttttttttttttksEJ d S rn   )	r"   r   r   rH   rI   rJ   r!   r7   r   rK   rK   rK   rL   Útest_distributeß  s   ..2rž   c               	   C   sX  t d\} }}tt| |t| |ksJ tt| |t| |t| |ks'J ttt| |t| ||t| d| |@ ddksAJ ttt| |t| |t| |t| |dksZJ tt| t	|t| |t| |t||tdt||t| ||ddksJ tt| |t| |ksJ tt	| t| dddksJ tt| |tdt| |ddks°J tt| |t| |dt| |ddksÅJ tt| |t| dt| |ddksÙJ tt
| |t| |dddksêJ tt| |B | |? ddtdtt| |t| |ddks
J tt| |A | |@ ddtdtt| |t| |ddks*J d S )Núx,y,zTF©Zremove_true)Zdeep)r
   r5   r   r   r   r   r   r   r   r   r   ©ro   rp   rw   rK   rK   rL   Útest_to_anfå  s,   $ÿ2(ÿ&*("
ÿÿrŒ   c                   C   s  t ttu sJ t ttu sJ t ttksJ t tt B tB tu s%J t tt @ t@ tu s2J t tt? t tB ks?J t ttttt tB t tB @ t tB @ ksXJ t ttA tA ttB tB t t B tB @ tt B t B @ t tB t B @ ksJ t ttttt tB ttB @ ksJ t tttB tB t t @ t @ ksšJ t ttt@ t@ t t B t B ksœJ t ttt? tt @ ksÌJ t tttttt	t
tttt
t t t ksèJ t tttA tA t tB tB tt B tB @ ttB t B @ t t B t B @ ksJ t tttttt t B tt B @ ks+J t tt? tt? A tt @ t t@ B ksBJ t tt? tt? A dt t B tB tB tt @ t t@ B @ ksdJ ttdd  ¡ tksqJ ttdd  ¡ t ksJ ttdd  d S )NFrN   r   c                   S   s   t tdk dgt ¡ S r    )r   rH   rI   r(   rK   rK   rK   rL   rS     r¡   ztest_to_nnf.<locals>.<lambda>)r(   r-   r.   rH   rI   r   rJ   r   r   r   r   rB   r\   rK   rK   rK   rL   Útest_to_nnfú  s4   2:ÿ&**8:
ÿ0.&
ÿrœ   c                	   C   s   t ttB  tttttksJ t tt@ tB tttttttks'J t tt? t tB ks4J t ttt@ ? t tB t tB @ ksHJ t tttB @ t ttB @ B dttB ks^J t tt@ tttkskJ t ttttttttttttksJ t tttt@ t tB t tB @ t t B tB @ ks J t ttttB dttttttttttttttksÂJ t td td ksÎJ d S ©NTrN   )r)   rI   rJ   r   r   rH   r   r   rK   rK   rK   rL   Útest_to_cnf  s   $*(,0"ÿ*ÿr¿   c                     s  t d\} }}}}}}}}}	}
}}}}| |@ |@ |@ |@ |@ |@ |@ |@ | |@ |@ |@ |@ |@ |@ |	@ |@ B | |
@ |@ |@ |@ |@ |@ |@ |@ B  tt sQJ tt fdd tttfttfD ]$\}}|| ||||||||	 tt fdd | ddd ksJ qcd S )Nzx1:16c                      ó   t  ddS ©NTr   ©r)   rK   ©ÚeqrK   rL   rS   ,  r   z"test_issue_18904.<locals>.<lambda>c                      rÀ   rÁ   rÂ   rK   rÃ   rK   rL   rS   /  r   T)r   Zforce)	r
   r%   r)   rB   r   Úzipr   r   r*   )Zx1Zx2Zx3Zx4Zx5Zx6Zx7Zx8Zx9Zx10Zx11Zx12Zx13Zx14Zx15r¥   ÚtrK   rÃ   rL   Útest_issue_18904&  s   &""ÿ"þýrÇ   c                   C   s(   t ttdktdktdk @ B sJ d S )NéûÿÿÿrQ   é   )r%   r)   r_   r^   rK   rK   rK   rL   Útest_issue_99493  s   (rÊ   c                   C   s  t  t  ttB  ¡¡tttB  ksJ t  t  tt@ tB ¡¡ttt@ tB ks*J t  t  tt? ¡¡ttt? ks<J t  t  ttt@ ? ¡¡tttt@ ? ksRJ t  t  tttB @ t ttB @ B ¡¡ttttB @ t ttB @ B ksvJ t  t  tt@ ¡¡ttt@ ksJ d S rn   )rA   Z
CNF_to_cnfZto_CNFrI   rJ   r)   rH   rK   rK   rK   rL   Útest_to_CNF7  s   (,$,H(rË   c                   C   s8  t ttB  tttttksJ t tttB @ tttttttks'J t tt? t tB ks4J t ttt@ ? t tt@ B ksEJ t ttB ttB ksQJ t tttdtttttttttksjJ t tttt@ dtttttttttttttttksJ t td td ksJ d S rŸ   )r*   rI   rJ   r   r   rH   r   r   rK   rK   rK   rL   Útest_to_dnfA  s   $*"ÿ.ÿrÌ   c                     s   t ttd\} }} fdd  t| |B || B g| ||g ddgddggks,J  t| |B ||  B g| ||g ddgddggksIJ d S )Nr¹   c                    s0   zt  fdd| D W S  ty   |  Y S w )Nc                 3   s    | ]} |V  qd S rn   rK   )rX   ro   ©Úsorted_recursiverK   rL   Ú	<genexpr>T  s    z=test_to_int_repr.<locals>.sorted_recursive.<locals>.<genexpr>)Úsortedr\   )ÚargrÍ   rK   rL   rÎ   R  s
   ÿz*test_to_int_repr.<locals>.sorted_recursiverN   rQ   r   r¢   )r®   r   r
   r+   r»   rK   rÍ   rL   Útest_to_int_reprO  s   ÿ ÿrÒ   c                  C   s¬   t d\} }ttdu sJ ttdu sJ t| du sJ tt| |du s)J tt| |t| |du s8J tt| |t| |du sGJ ttt| |du sTJ d S )Núx,yTF)r
   r6   r-   r.   r   r   r   r   ©ro   rp   rK   rK   rL   Útest_is_anf^  s   rÕ   c                   C   s  t tdu sJ t tdu sJ t t du sJ t tt@ du s#J t tt@ t t@ B t t@ B t t @ B ddu s>J t ttB t t B @ du sNJ t ttttdu s[J t ttA du seJ t tt@ t t@ B t t@ B t t @ B ddu sJ d S r{   )r$   r-   rH   rI   r   r   rK   rK   rK   rL   Útest_is_nnfi  s   6 :rÖ   c                   C   s   t tdu sJ t ttB tB du sJ t tt@ t@ du s J t ttB t@ du s,J t tt@ tB du s8J t tt@  tB du sEJ d S r{   )r%   ro   rp   rw   rK   rK   rK   rL   Útest_is_cnfu  ó   r×   c                   C   s   t tdu sJ t ttB tB du sJ t tt@ t@ du s J t tt@ tB du s,J t ttB t@ du s8J t ttB  t@ du sEJ d S r{   )r&   ro   rp   rw   rK   rK   rK   rL   Útest_is_dnf~  rØ   rÙ   c                  C   s¢  t d\} }}tdddtu sJ tdddtu sJ tdddtu s%J tdddtu s/J tt| ||ts:J d} t| |||ksFJ d} t| |||ksRJ d}tt| ||||ksaJ tt| dt|ddtu sqJ tt| |ttks}J tt|| tksJ tdtt	tksJ tdtt	t	ksJ t
tdd  t
tdd  t
td	d  t
td
d  tdddtju sÂJ ttdddddtsÏJ t
tdd  tttdt	tttt	tksçJ tttdt	ttt t	tksùJ tttdt	ttt t	tksJ tttdt	tttt	tksJ tttjtt	tttt	tks1J tttjtt	ttt t	tksEJ tttjtt	ttt t	tksYJ tttjtt	tttt	tkslJ tttdt	ttkszJ tttdt	ttksJ tttdt	tt	ksJ tttdt	tt	ks€J tttdt	t td¡t	ks¶J tttdt	t td¡tksÈJ t
tdd  d S )NzA:CTFrN   r   c                   S   s   t dttS rP   ©r   ro   rp   rK   rK   rK   rL   rS     r   ztest_ITE.<locals>.<lambda>c                   S   s   t dg tS r    ©r   rp   rK   rK   rK   rL   rS     r   c                   S   s   t ddtS )NrN   rK   rÛ   rK   rK   rK   rL   rS     r   c                   S   s   t dtg S r    rÛ   rK   rK   rK   rL   rS     r   rŽ   c                   S   s   t tdkttS r    rÚ   rK   rK   rK   rL   rS   ¡  ó    c                   S   s   t tdktttS r    )r   ro   rp   rw   rK   rK   rK   rL   rS   ³  r   )r
   r   r.   r-   rk   r   r   ro   r   rp   rB   r\   r   r   r   rw   r¬   r   r°   rK   rK   rL   Útest_ITE  sN    "$&$&((&$$rÝ   c                   C   sè   t ddu sJ t ddu sJ t tdu sJ t t du s!J t tttdu s,J t t t¡du s7J t tt t¡du sDJ t tttdu sOJ t tt t¡t t¡du s`J t tdk shJ t tt	 dk rrJ d S )NTFr   )
r0   rH   r   rI   r   Úzeror   r   ro   rp   rK   rK   rK   rL   Útest_is_literal¶  s   "rß   c                   C   sî  dt @ t d@   krt ksJ  J dt @ t d@   kr!dks$J  J t t@ tt tks/J dt B t dB   kr>dksAJ  J dt B t dB   krPt ksSJ  J t tB tt tks^J t  tt ksgJ dt ? t d>   krvt ksyJ  J dt ? t d>   krdksJ  J t d? dt >   krdksJ  J t d? dt >   kr­t  ks°J  J t t? tt >   krÂtt tksÅJ  J dt A t dA   krÕt  ksØJ  J dt A t dA   krçt ksêJ  J t tA tt tksõJ d S r{   )rH   rI   r   r   r   r   r   rK   rK   rK   rL   Útest_operatorsÄ  s   $$$$$$$&*&$rà   c                  C   sú  t tj u sJ ttju sJ t dusJ tdusJ t sJ tr"J t dks(J tdks.J t dkr4J tdkr:J t tkr@J tt tdksJJ tttdksTJ tt dhttdh  krgdksjJ  J tt tsqJ tttsxJ tt trJ tttrJ tt tu sJ tdtu sJ ttt u sJ tdt u sŠJ t  tu s­J t t u sŽJ t	dt gdtgD ],\} }t
| |tu sËJ t
|| tu sÔJ t
||tu sÝJ t
| | t u sæJ t
| ttksïJ t
|ttu søJ | du r|du s| |@ tu sJ || @ tu sJ |dur"||@ tu s"J | dur0| | @ t u s0J t| |t u s:J t|| t u sDJ t||tu sNJ t| | t u sXJ t| tt u sbJ t|ttkslJ | du rv|du s| |B t u sJ || B t u sJ |dur||B tu sJ | dur€| | B t u s€J t| |t u s®J t|| t u sžJ t||tu sÂJ t| | tu sÌJ t| tt ks×J t|ttksáJ | du rë|du sý| |A t u sôJ || A t u sýJ |dur||A tu sJ | dur| | A tu sJ t| |t u s#J t|| t u s-J t||t u s7J t| | tu sAJ t| tt ksLJ t|tt u sVJ t| |tu s`J t|| tu sjJ t||t u stJ t| | tu s~J t| ttu sJ t|tt ksJ t| |tu sJ t|| t u s§J t||t u s±J t| | t u s»J t| ttksÅJ t|tt u sÏJ tt| t u sÙJ tt|t ksäJ | du rî|du s| |? tu s÷J || > tu s J || ? t u s	J | |> t u sJ |dur)||? t u s J ||> t u s)J | dur@| | ? t u s7J | | > t u s@J t| |tu sJJ t|| tu sTJ t||t u s^J t| | t u shJ t| ttksrJ t|tt ks}J tt| tksJ tt|t ksJ t| | | t u sJ t| | |t u sšJ t| || tu s³J t| ||tu sŸJ t|| | t u sÉJ t|| |tu sÔJ t||| t u sßJ t|||tu sêJ qœtdd tj tjfD sûJ d S )NTFrN   c                 s   s     | ]}|  d d¡|u V  qdS )rN   rQ   Nr   rW   rK   rK   rL   rÏ   Z  s    z"test_true_false.<locals>.<genexpr>)r-   r   r.   ÚhashÚlenrk   r/   Úboolr   rE   r   ro   r   r   r   r   r   r   r   Úall)ÚTÚFrK   rK   rL   Útest_true_false×  sà   ,







$rç   c                   C   st  t tdkdtdk ¡ tdtksJ ttdktdk ¡ tddks%J ttdktdk ¡ tt dtdt ks=J ttdk ¡ tt dksMJ tttdktdk  ¡ t	tt dtdtkshJ t
 ¡ tjksqJ t ¡ t kszJ t ¡ tjksJ tttdk tdktdk  ¡ t t d¡ksJ ttdk ttdk  ¡ tdk  ¡ ks±J ttdd  d S )	Nr   FrN   rQ   éþÿÿÿr   c                   S   s   t tdk  ¡ S r    )r   ro   Úas_setrK   rK   rK   rL   rS   j  rÜ   z"test_bool_as_set.<locals>.<lambda>)r   rp   ré   r   r   r   ro   r   r   r   r-   r   ZUniversalSetr.   r   Úopenr   rB   r   rK   rK   rK   rL   Útest_bool_as_set]  s   &$0 ÿ2*rë   c                  C   s   t d\} }t| dk|dk ¡ tdttdt ksJ t| dk|dk ¡ tjtj tt dddtt ddd  ks@J d S )NrÓ   r   T)r
   r   ré   r   r   r   r   ZRealsrÔ   rK   rK   rL   Útest_multivariate_bool_as_setm  s
   .ÿrì   c                  C   s   t ddd} | t k| tkf}t| }|jtu r*t|jt|| tj¡ ks)J n|dks0J t	| }|jt	u rDt|jdksBJ d S |dksJJ d S )Nro   T)Zextended_realrQ   )
r
   r   r   Úfuncrâ   ÚargsÚcountr   r-   r   )ro   rî   ÚvrK   rK   rL   Útest_all_or_nothingv  s   
$
rñ   c                   C   s    t jt ksJ tjtksJ d S rn   )r-   r]   r.   rK   rK   rK   rL   Útest_canonical_atoms  ó   rò   c                   C   s    t jtksJ tjt ksJ d S rn   )r-   Znegatedr.   rK   rK   rK   rL   Útest_negated_atoms  ró   rô   c                   C   s   t tdkttk  ¡ tdtddksJ t tdkttk  ¡ tdtks&J ttk  ¡ tt tks4J tt k ¡ tt tksCJ d S )NrQ   T)Z	left_openrN   )r   ro   r   ré   r   rK   rK   rK   rL   Útest_issue_8777  s   ($"rõ   c                   C   sJ   t tt tk tdktdtkttk  ¡ tt dtdt ks#J d S )Nrè   rQ   )r   r   r   ro   ré   r   rK   rK   rK   rL   Útest_issue_8975  s   *ÿrö   c                   C   s(   t g d¢dks
J t ddksJ d S )N)rN   r   rN   r   r   rN   r   éR   Z0010101000111001i9*  )r1   rK   rK   rK   rL   Útest_term_to_integer  s   rø   c                   C   sD   t dg d¢ks
J t ddg d¢ksJ t ddg d¢ks J d S )	Ni	  )
rN   rN   r   r   r   r   rN   r   r   rN   é{   r   )rN   rN   rN   rN   r   rN   rN   iÈ  é   )r   r   r   r   r   r   r   rN   rN   rN   r   r   rN   r   r   r   )r2   rK   rK   rK   rL   Útest_integer_to_term   s   rû   c                  C   s  t d\} }}}| |@ |@ | |@ B }| | |@ |¡||@ |B ks"J | | |@ |@ |¡| |@ |B ks4J | |B |B | |B @ }| | |B |¡||B |@ ksNJ | | |B |B |¡| |B |@ ks`J | |A |A | |A @ }| | |A |¡||A |@ kszJ | | |A |A |¡| |A |@ ksJ d S )Nza b c d)r
   r¬   )r^   r_   r`   r€   r¥   rK   rK   rL   Útest_issue_21971Š  s    $ $ (rü   c                   C   sÀ   t ttttttgddg d¢ksJ t tttB ttgddg d¢ks'J t ttt? ttgddg d¢ks:J t ttttttgddgdfddgdfddgdfddgdfgks^J d S )	NF)Úinput)FFFT)FTTT)TTFTr   rN   T)Úlistr3   r   ro   rp   rK   rK   rK   rL   Útest_truth_tableµ  s   ÿÿÿ*ÿrÿ   c                     s  t jt jfD ]xttfdd ttfdd ttfdd ttfdd t jt jtfD ]J tdD ]C} tt fdd tt fdd tt fd	d tt fd
d tt fdd tt fdd   q9q3qd S )Nc                      s    
 S rn   rK   rK   ©rÆ   rK   rL   rS   Â  ó    z!test_issue_8571.<locals>.<lambda>c                      s     S rn   rK   rK   r   rK   rL   rS   Ã  r  c                      ó   t  S rn   )ÚabsrK   r   rK   rL   rS   Ä  ó    c                      r  rn   )ÚintrK   r   rK   rL   rS   Æ  r  rQ   c                      s     S rn   rK   rK   ©ÚorÆ   rK   rL   rS   Ê  r  c                      s     S rn   rK   rK   r  rK   rL   rS   Ë  r  c                      s     S rn   rK   rK   r  rK   rL   rS   Ì  r  c                      s     S rn   rK   rK   r  rK   rL   rS   Í  r  c                      s     S rn   rK   rK   r  rK   rL   rS   Î  r  c                      s     S rn   rK   rK   r  rK   rL   rS   Ï  r  )	r   r-   r.   rB   r\   ZZeror   ro   Úrange)Ú_rK   r  rL   Útest_issue_8571À  s"   ùÿùr
  c                  C   s   t ddd} t ddd\}}| ||  | d   ||  | d   dk }|tjus+J | ¡ tju s4J |dk ¡ tju s?J d S )NÚnT)Únegativezp q)ÚpositiverN   r   )r
   r   r.   Úexpandr-   )r  ÚpÚqÚrrK   rK   rL   Útest_expand_relationalÓ  s   ,r  c                   C   s$   t jjdksJ t jjdksJ d S )NT)r   r-   Zis_Atomr.   rK   rK   rK   rL   Útest_issue_12717Ü  s   r  c                     sŠ   t ddd} tdd dtjd| fD sJ t ddd}td	d d
tjd|fD s,J tdd ttdk fD s;J dtdtd g fD ] tt fdd qEd S )NÚnzT)Znonzeroc                 s   ó    | ]
}t |tju V  qd S rn   )r4   r   r-   rW   rK   rK   rL   rÏ   ã  ó    z"test_as_Boolean.<locals>.<genexpr>rN   rw   )rÞ   c                 s   r  rn   )r4   r   r.   rW   rK   rK   rL   rÏ   å  r  Fr   c                 s   s    | ]	}t ||kV  qd S rn   ©r4   rW   rK   rK   rL   rÏ   æ  s    rQ   c                      r  rn   r  rK   ©rY   rK   rL   rS   è  r  z!test_as_Boolean.<locals>.<lambda>)r
   rä   r   r-   r.   ro   rB   r\   )r  rw   rK   r  rL   Útest_as_Booleaná  s     ÿr  c                  C   s>  t tdk ttjtthksJ ttfD ]#} | tdjt ks J | tdjthks+J | tdjthks6J qtj	jt ks@J tj
jt ksIJ tjthksQJ ttttdttdjtthksdJ t t¡jt ksoJ t td¡jt ks{J t t¡jthksJ t td¡jthksJ t t¡jt ksJ d S )NrN   TF)r   ro   rp   rw   Zbinary_symbolsr   r   Úsetr   r-   r.   r   r   ZprimeÚltZis_truerÄ   )r¥   rK   rK   rL   Útest_binary_symbolsë  s   &r  c                   C   s,   t tt t¡tdttdfdksJ d S )Nr   F)rN   T)r   ro   rp   Zdiffr   r   rK   rK   rK   rL   Útest_BooleanFunction_diffü  s   ,r  c                  C   s  t d\} }}}}}}}||@ |@ | @ ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ |@ | @ B ||@ | @ | @ B ||@ |@ | @ | @ B ||@ |@ | @ | @ B ||@ |  @ | @ | @ B ||@ |  @ | @ | @ B | |@ |@ |@ | @ | @ B }||@ |@ | @ ||@ |@ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ | @ | @ B ||@ |@ | @ | @ B ||@ |  @ | @ | @ B | |@ |@ |@ | @ | @ B }	||B |B ||B |B @ ||B |B @ ||B |B @ ||B |B @ ||B |B @ ||B | B | B @ | | B | B | B @ || B | B | B | B @ | |B | B | B | B | B @ || B | B | B | B | B @ ||B |B |  B | B | B | B @ }
t|d|	ksšJ t|d|
ks²J g d¢g d¢g d¢g d¢g d¢g d	¢g}g d
¢g d¢g d¢g d¢g}tttttg|tt @ tt@ t @ B ksìJ tttttg||tt @ tt@ t @ B ksJ d S )NzA B C D E F G HZdnfZcnf)r   rN   r   r   r   )r   rN   rN   r   r   r   r   ©rN   r   r   r   ©rN   r   r   rN   )rN   rN   r   r   ©rN   rN   r   rN   )r
   r'   r   rx   ro   rp   rw   )rH   rI   rJ   rl   ÚEræ   ÚGÚHr  ZsoldnfZsolcnfr   r£   rK   rK   rL   Útest_issue_14700   s   8ÿÿÿþþþýýýüüû6ÿÿÿþþþýý.
ÿ
ÿÿþþý ý"üÿ0ÿr$  c                  C   s`  t ddd\} }}}t ddd\}}t||k||k  ¡ tjks"J t||k||k ¡ tjks2J t||k| | k ¡ tjksDJ t||k| | k  ¡ tjksVJ t| | k||k  ¡ tjkshJ t| | k| | k ¡ tjks|J t| | k||k ¡ tjksJ t| | k| | k  ¡ tjks¢J t||k||k  ¡ tjks²J t||k||k ¡ tjksÂJ t||k| | k ¡ tjksÔJ t||k| | k  ¡ tjksæJ t| | k||k  ¡ tjksøJ t| | k||k ¡ tjksJ t| | k| | k ¡ tjks J t| | k| | k  ¡ tjks5J t||k ||k ¡ tjksFJ t||k||k ¡ tjksWJ t| | k||k ¡ tjksjJ t| | k ||k ¡ tjks}J t||k | | k ¡ tjksJ t| | k| | k ¡ tjks¥J t||k| | k ¡ tjksžJ t| | k | | k ¡ tjksÍJ t||k ||k ¡ tjksÞJ t||k||k ¡ tjksïJ t| | k||k ¡ tjksJ t| | k ||k ¡ tjksJ t||k | | k ¡ tjks(J t||k| | k ¡ tjks;J t| | k| | k ¡ tjksPJ t| | k | | k ¡ tjkseJ t||k| |k ||k ¡ tjksyJ t||k||k  ¡ tjksJ t||kt|| ¡ ||kksJ t||kt|| ¡ t||ks±J tt|||dkd|k |dk||k  ¡ t|||dk@ |dk@ ||k@ ksÚJ t||t||@ ||k@ ||k@  ¡ t||t||@ ||k@ ksÿJ tt||t||  ¡ tt|d	t|d	ksJ t||k||k ¡ t	||ks.J d S )
Núw x y zT©Úrealúd eFrN   rQ   r   r   )
r
   r   r   r   r-   r   r.   r   r   r   )rx   ro   rp   rw   r€   rb   rK   rK   rL   Útest_relational_simplification  s\     $$$($(  $$$&**""&&&*&*""&&&&**("&(( 
ÿ&
ÿ8*r)  c            	      C   s<  dd } t ddd\}}}}t ddd\}}tt||||k||k ||k||k tt|||dkd	|k |d
k||k tt|||dkd	|k |d
k||k t||kt||ttt||||k||k t||k||k tt|||dkd	|k |dk||k t||t||@ ||k@ ||k@ f}|D ]	}| || ¡  qd S )Nc           	      S   s   | j }t|}tttttt|d  || |}|D ] }tt||}|  |¡}| |¡}||ks>J d 	| ||¡qd S )NrN   zHOriginal: {}
and simplified: {}
do not evaluate to the same value for {})
Zfree_symbolsrâ   rþ   r  rF   r  ÚdictrÅ   r¬   Úformat)	ÚoriginalÚ
simplifiedÚsymbr  Ú	valuelistÚvaluesÚsublistÚoriginalvalueÚsimplifiedvaluerK   rK   rL   Ú(test_simplification_numerically_functionR  s   *


þüz\test_relational_simplification_numerically.<locals>.test_simplification_numerically_functionr%  Tr&  r(  FrN   rQ   r   r¢   )r
   r   r   r   r   )	r4  rx   ro   rp   rw   r€   rb   ZexpressionsZ
expressionrK   rK   rL   Ú*test_relational_simplification_numericallyP  s"   $$$*$ÿ"ú	ÿÿr5  c               
   C   sä   ddl m}  ddlm}m}m} | d}| d}| d}|||g}| | | g}|D ]D}	|	D ]?}
|
d }|
d }tttttt	dd	d
 d
}|D ] }t
t||}| |¡}| |¡}||ksmJ d |||¡qMq/q+d S )Nr   )ÚWild)Úsimplify_patterns_andÚsimplify_patterns_orÚsimplify_patterns_xorr^   r_   r`   rN   rè   rQ   r   zGOriginal: {}
and simplified: {}
do not evaluate to the same value for{})Z
sympy.corer6  Úsympy.logic.boolalgr7  r8  r9  rþ   r  rF   r  r*  rÅ   r¬   r+  )r6  r7  r8  r9  r^   r_   r`   r.  ZpatternlistsZpatternlistÚpatternr,  r-  r/  r0  r1  r2  r3  rK   rK   rL   Ú3test_relational_simplification_patterns_numericallyo  s0   
ÿ$


þüüÿr<  c                  C   sT   t d} | dk| dk B | dk| dk @ B  ¡ | dk| dk B | dk| dk @ B ks(J d S )Nr  r   r   )r
   r   )r  rK   rK   rL   Útest_issue_16803  s   "ÿr=  c                      s   t ttti tt t dkt t dk   ¡sJ tt t dk t t dk   ¡r*J tt fdd tt fdd tt fdd d S )Nr   c                      s    t tt dk tt dk   ¡S ©Nr   )r   ro   rp   r¬   rK   ©r  rK   rL   rS     ó     z"test_issue_17530.<locals>.<lambda>c                      ó    t tt dktt dk   ¡S r>  ©r   ro   rp   r¬   rK   r?  rK   rL   rS     r@  c                      rA  r>  rB  rK   r?  rK   rL   rS     r@  )ro   r   rp   r   r¬   r   rB   r\   rK   rK   r?  rL   Útest_issue_17530  s   $$rC  c                   C   s¬   t ddgddgksJ t g d¢g d¢ksJ t g d¢g d¢ks$J t g d¢g d¢ks0J t g d¢g d¢ks<J t g d¢g d¢ksHJ t g d	¢g d
¢ksTJ d S )NrN   r   r   r   ©rN   rN   rN   r   r  r  r   r   r   )r8   rK   rK   rK   rL   Útest_anf_coeffs  s   rE  c                  C   s   t d\} }t| gddgdksJ t| gddgdksJ t| gddgt| dddks/J t| |gg d¢tdt| |ddksDJ d S )NrÓ   rN   Tr   Frº   rD  )r
   r9   r   r   rÔ   rK   rK   rL   Útest_ANFform¡  s   "ÿrF  c                  C   sP   t d\} }td| |gt| |ksJ tddg| |gtt|| ks&J d S )NrÓ   r   rN   r   )r
   r:   r   r   rÔ   rK   rK   rL   Útest_bool_mintermª  s   (rG  c                  C   sT   t d\} }td| |gtt| |ksJ tddg| |gtt|| ks(J d S )NrÓ   rQ   r   rN   )r
   r;   r   r   rÔ   rK   rK   rL   Útest_bool_maxterm°  s    (rH  c                  C   sF   t d\} }td| |g|ksJ tddg| |gt| |ks!J d S )NrÓ   rN   )r
   r<   r   rÔ   rK   rK   rL   Útest_bool_monomial¶  s   $rI  c                   C   s8   t g d¢g d¢dksJ t g d¢g d¢dksJ d S )Nr   r   rQ   r   r¢   )r=   rK   rK   rK   rL   Útest_check_pairŒ  s   rJ  c                  C   s:   t t@ tt @ B t t  @ B } t| dd}|| ksJ d S rÁ   )rI   rJ   rH   r*   )rs   ÚresultrK   rK   rL   Útest_issue_19114Á  s   rL  c                  C   sl   t ttttgg d¢} tt @ tt@ t@ B tt @ t @ B tt @ t @ B tt @ t @ B }| |ks4J d S )N)rN   rQ   r   rÉ   r   é   é   é	   r   é   é   r   )r   r^   r_   r`   r€   )rK  ZexpectedrK   rK   rL   Útest_issue_20870Ç  s   $ÿÿrR  c                   C   sV   t g d¢tttgttttttksJ t g d¢tttgttttks)J d S ©Nr   )r   rN   r   )r>   ro   rp   rw   r   r   rK   rK   rK   rL   Útest_convert_to_varsSOPÎ  s   ,*rT  c                   C   sR   t g d¢tttgtttttksJ t g d¢tttgttttks'J d S rS  )r?   ro   rp   rw   r   r   rK   rK   rK   rL   Útest_convert_to_varsPOSÓ  s   (*rU  c                   C   sf  t tdk tdk  rJ t tdk tdk sJ t tdk dtktju s%J t tdk tdk tdk ks4J t tdktdk r@J t tdktdksKJ t tdkdtktju sYJ t tdktdktdkkshJ t tdktdk rtJ t tdktdksJ t tdkdtk tju sJ t tdktdktdkksJ t tdktdk ršJ t tdktdks³J t tdkdtktju sÁJ t tdktdktdkksÐJ t ttdttd rÞJ t ttdttdsëJ t ttdtdttju sûJ t ttdttdttdksJ t ttdttd rJ t ttdtdttju s.J t ttdttds<J t ttdttdttdksOJ t ttdktdktdktdkksdJ t ttdktdktdktdk@ tju s|J t t 	t¡t 	t¡tju sJ t t 	t¡t 
t¡tju sJ t t 	t¡t t¡t 	t¡ks±J d S r>  )r   ro   r   r-   rp   r   r   r   r   r  r  r.   r'  rK   rK   rK   rL   Útest_refineØ  s:    &"&*0""*rV  N)°Zsympy.assumptions.askr   Zsympy.assumptions.refiner   Zsympy.core.numbersr   Zsympy.core.relationalr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr	   r
   Zsympy.functionsr   Z(sympy.functions.elementary.trigonometricr   Zsympy.sets.setsr   r   r   Z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-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   Zsympy.assumptions.cnfrA   Zsympy.testing.pytestrB   rC   rD   Zsympy.utilities.iterablesrE   Ú	itertoolsrF   rG   rH   rI   rJ   rl   r^   r_   r`   r€   rb   rx   ro   rp   rw   rM   rg   ri   rm   rt   rv   ry   rz   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ß   rà   rç   rë   rì   rñ   rò   rô   rõ   rö   rø   rû   rü   rÿ   r
  r  r  r  r  r  r$  r)  r5  r<  r=  rC  rE  rF  rG  rH  rI  rJ  rL  rR  rT  rU  rV  rK   rK   rK   rL   Ú<module>   sÈ    Ä
		o
		/ 
	
3
	
	