U
    —9%eÏ~ ã                   @   s  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZmZmZ d dlmZmZ d dlmZ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%m&Z&m'Z'm(Z(m)Z)m*Z* d d
l+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d dlHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZRmSZSmTZTmUZUmVZV d dlWZWdd„ ZXdd„ ZYdd„ ZZdd„ Z[dd„ Z\d d!„ Z]d"d#„ Z^d$d%„ Z_d&d'„ Z`d(d)„ Zad*d+„ Zbd,d-„ Zcd.d/„ Zdd0d1„ Zed2d3„ Zfd4d5„ Zgd6d7„ Zhd8d9„ ZieRd:d;„ ƒZjd<d=„ ZkeVd>d?„ ƒZld@dA„ ZmeRdBdC„ ƒZndDdE„ ZodFdG„ ZpeVdHdI„ ƒZqdJdK„ ZreVdLdM„ ƒZsdNdO„ ZtdPdQ„ ZudRdS„ ZvdTdU„ ZwdVdW„ ZxeRdXdY„ ƒZydZd[„ Zzd\d]„ Z{eVd^d_„ ƒZ|d`da„ Z}dbdc„ Z~ddde„ Zdfdg„ Z€eVdhdi„ ƒZdjdk„ Z‚eVdldm„ ƒZƒdndo„ Z„dpdq„ Z…drds„ Z†dtdu„ Z‡dvdw„ Zˆdxdy„ Z‰dzd{„ ZŠd|d}„ Z‹d~d„ ZŒd€d„ Zd‚dƒ„ ZŽeSd„d…„ ƒZd†d‡„ Zdˆd‰„ Z‘dŠd‹„ Z’dŒd„ Z“dŽd„ Z”dd‘„ Z•d’d“„ Z–eRd”d•„ ƒZ—d–d—„ Z˜d˜d™„ Z™dšd›„ Zšdœd„ Z›dždŸ„ Zœd d¡„ Zd¢d£„ ZždS )¤é    )
ÚtÚwÚxÚyÚzÚnÚkÚmÚpÚi)ÚaskÚAssumptionsContextÚQÚregister_handlerÚremove_handler)ÚassumingÚglobal_assumptionsÚ	Predicate)ÚCNFÚLiteral)Úsingle_fact_lookupÚget_known_factsÚgenerate_known_facts_dictÚget_known_facts_keys)Ú
AskHandler)Úget_all_known_factsÚget_known_facts_dict)ÚAdd)ÚIÚIntegerÚRationalÚooÚzooÚpi)ÚS)ÚPow)ÚStrÚsymbolsÚSymbol)Ú	factorial)ÚAbsÚimÚreÚsign)ÚexpÚlog)Úsqrt)ÚacosÚacotÚasinÚatanÚcosÚcotÚsinÚtan)Ú
EquivalentÚImpliesÚXorÚAndÚto_cnf)ÚMatrixÚSparseMatrix)ÚXFAILÚslowÚraisesÚwarns_deprecated_sympyÚ_both_exp_powNc                  C   sr  d} t t | ¡ƒdkst‚t t | ¡ƒdks0t‚t t | ¡ƒdksFt‚t t | ¡ƒdks\t‚t t | ¡ƒdksrt‚t t | ¡ƒdksˆt‚t t 	| ¡ƒdksžt‚t t 
| ¡ƒdks´t‚t t | ¡ƒdksÊt‚t t | ¡ƒdksàt‚t t | ¡ƒdksöt‚t t | ¡ƒdkst‚t t | ¡ƒdks&t‚t t | ¡ƒdks>t‚t t | ¡ƒdksVt‚t t | ¡ƒdksnt‚d S )Né   TF©r   r   ÚcommutativeÚAssertionErrorÚintegerÚrationalÚrealÚcomplexÚ
irrationalÚ	imaginaryÚpositiveÚnegativeÚevenÚoddÚfiniteÚprimeÚ	compositeÚ	hermitianÚantihermitian©r   © rY   úa/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/assumptions/tests/test_query.pyÚ
test_int_1   s"    r[   c                  C   sr  d} t t | ¡ƒdkst‚t t | ¡ƒdks0t‚t t | ¡ƒdksFt‚t t | ¡ƒdks\t‚t t | ¡ƒdksrt‚t t | ¡ƒdksˆt‚t t 	| ¡ƒdksžt‚t t 
| ¡ƒdks´t‚t t | ¡ƒdksÊt‚t t | ¡ƒdksàt‚t t | ¡ƒdksöt‚t t | ¡ƒdkst‚t t | ¡ƒdks&t‚t t | ¡ƒdks>t‚t t | ¡ƒdksVt‚t t | ¡ƒdksnt‚d S )Né   TFrF   rX   rY   rY   rZ   Útest_int_111   s"    r]   c                  C   sr  d} t t | ¡ƒdkst‚t t | ¡ƒdks0t‚t t | ¡ƒdksFt‚t t | ¡ƒdks\t‚t t | ¡ƒdksrt‚t t | ¡ƒdksˆt‚t t 	| ¡ƒdksžt‚t t 
| ¡ƒdks´t‚t t | ¡ƒdksÊt‚t t | ¡ƒdksàt‚t t | ¡ƒdksöt‚t t | ¡ƒdkst‚t t | ¡ƒdks&t‚t t | ¡ƒdks>t‚t t | ¡ƒdksVt‚t t | ¡ƒdksnt‚d S )Né   TFrF   rX   rY   rY   rZ   Útest_int_12E   s"    r_   c                  C   s  d} t t | ¡ƒdkst‚t t | ¡ƒdks0t‚t t | ¡ƒd ksFt‚t t | ¡ƒdks\t‚t t | ¡ƒdksrt‚t t | ¡ƒd ksˆt‚t t 	| ¡ƒdksžt‚t t 
| ¡ƒdks´t‚t t | ¡ƒdksÊt‚t t | ¡ƒdksàt‚t t | ¡ƒdksöt‚t t | ¡ƒdkst‚t t | ¡ƒdks&t‚t t | ¡ƒdks>t‚t t | ¡ƒdksVt‚t t | ¡ƒdksnt‚d} t t | ¡ƒdksŠt‚t t | ¡ƒdks¢t‚t t | ¡ƒd ksºt‚t t | ¡ƒdksÒt‚t t | ¡ƒdksêt‚t t | ¡ƒd kst‚t t 	| ¡ƒdkst‚t t 
| ¡ƒdks2t‚t t | ¡ƒdksJt‚t t | ¡ƒdksbt‚t t | ¡ƒdkszt‚t t | ¡ƒdks’t‚t t | ¡ƒdksªt‚t t | ¡ƒdksÂt‚t t | ¡ƒdksÚt‚t t | ¡ƒdksòt‚t t tj¡ƒd kst‚d S )Nç      ð?TFgaÃÓ+eÙ@)r   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   Úmathr#   rX   rY   rY   rZ   Útest_float_1Y   sF    rb   c                  C   sŽ  t dƒ} tt | ¡ƒdkst‚tt | ¡ƒdks4t‚tt | ¡ƒdksJt‚tt | ¡ƒdks`t‚tt | ¡ƒdksvt‚tt 	| ¡ƒdksŒt‚tt 
| ¡ƒdks¢t‚tt | ¡ƒdks¸t‚tt | ¡ƒdksÎt‚tt | ¡ƒdksät‚tt | ¡ƒdksút‚tt | ¡ƒdkst‚tt | ¡ƒdks*t‚tt | ¡ƒdksBt‚tt | ¡ƒdksZt‚tt | ¡ƒdksrt‚tt | ¡ƒdksŠt‚d S )Nr   FT)r   r   r   ÚnonzerorH   ÚzerorG   rI   rJ   rK   rL   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_zero_0‚   s$    re   c                  C   s¦  t dƒ} tt | ¡ƒdkst‚tt | ¡ƒdks4t‚tt | ¡ƒdksJt‚tt | ¡ƒdks`t‚tt | ¡ƒdksvt‚tt 	| ¡ƒdksŒt‚tt 
| ¡ƒdks¢t‚tt | ¡ƒdks¸t‚tt | ¡ƒdksÎt‚tt | ¡ƒdksät‚tt | ¡ƒdksút‚tt | ¡ƒdkst‚tt | ¡ƒdks*t‚tt | ¡ƒdksBt‚tt | ¡ƒdksZt‚tt | ¡ƒdksrt‚tt | ¡ƒdksŠt‚tt | ¡ƒdks¢t‚d S )NéÿÿÿÿTF)r   r   r   rc   rH   rd   rG   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_negativeone—   s&    rg   c                   C   sþ  t t t¡ƒdkst‚t t t¡ƒdks,t‚t t t¡ƒdksBt‚t t t¡ƒdksXt‚t t t¡ƒdksnt‚t t 	t¡ƒdks„t‚t t 
t¡ƒdksšt‚t t t¡ƒdks°t‚t t t¡ƒdksÆt‚t t t¡ƒdksÜt‚t t t¡ƒdksòt‚t t t¡ƒdks
t‚t t t¡ƒdks"t‚t t t¡ƒdks:t‚t t t¡ƒdksRt‚t t t¡ƒdksjt‚t t t¡ƒdks‚t‚t t t¡ƒdksšt‚t t t¡ƒdks²t‚t t t¡ƒdksÊt‚t t t¡ƒdksât‚t t t¡ƒdksút‚d S ©NTF)r   r   rG   r!   rH   rI   rJ   Ú	algebraicrK   Úextended_realrL   rM   rN   rO   Úextended_positiverP   rQ   rR   rS   ÚinfiniterT   rU   rV   rW   Úpositive_infiniteÚnegative_infiniterY   rY   rY   rZ   Útest_infinity­   s,    ro   c                  C   s  t j} tt | ¡ƒdkst‚tt | ¡ƒdks2t‚tt | ¡ƒdksHt‚tt | ¡ƒdks^t‚tt 	| ¡ƒdkstt‚tt 
| ¡ƒdksŠt‚tt | ¡ƒdks t‚tt | ¡ƒdks¶t‚tt | ¡ƒdksÌt‚tt | ¡ƒdksât‚tt | ¡ƒdksøt‚tt | ¡ƒdkst‚tt | ¡ƒdks(t‚tt | ¡ƒdks@t‚tt | ¡ƒdksXt‚tt t¡ƒdkspt‚tt | ¡ƒdksˆt‚tt | ¡ƒdks t‚tt | ¡ƒdks¸t‚tt | ¡ƒdksÐt‚tt t ¡ƒdksêt‚tt t ¡ƒdkst‚d S rh   )r$   ÚNegativeInfinityr   r   rG   rH   rI   rJ   ri   rK   rj   rL   rM   rN   rO   rP   Úextended_negativerQ   rR   rS   rl   r!   rT   rU   rV   rW   rm   rn   )ÚmmrY   rY   rZ   Útest_neg_infinityÆ   s.    rs   c                   C   s  t t t¡ƒdkst‚t t t¡ƒdks,t‚t t t¡ƒdksBt‚t t t¡ƒdksXt‚t t t¡ƒdksnt‚t t 	t¡ƒdks„t‚t t 
t¡ƒdksšt‚t t t¡ƒdks°t‚t t t¡ƒdksÆt‚t t t¡ƒdksÜt‚t t t¡ƒdksòt‚t t t¡ƒdks
t‚t t t¡ƒdks"t‚t t t¡ƒdks:t‚t t t¡ƒdksRt‚t t t¡ƒdksjt‚t t t¡ƒdks‚t‚t t t¡ƒdksšt‚t t t¡ƒdks²t‚t t t¡ƒdksÊt‚t t t¡ƒdksât‚t t t¡ƒdksút‚t t t¡ƒdkst‚d S rh   )r   r   rG   r"   rH   rI   rJ   ri   rK   rj   rL   rM   rN   rO   rP   rd   rc   rQ   rR   rS   rl   rT   rU   rV   rW   rm   rn   rY   rY   rY   rZ   Útest_complex_infinityà   s.    rt   c                  C   sÔ  t j} tt | ¡ƒdkst‚tt | ¡ƒd ks2t‚tt | ¡ƒd ksHt‚tt | ¡ƒd ks^t‚tt 	| ¡ƒd kstt‚tt 
| ¡ƒd ksŠt‚tt | ¡ƒd ks t‚tt | ¡ƒd ks¶t‚tt | ¡ƒd ksÌt‚tt | ¡ƒd ksât‚tt | ¡ƒd ksøt‚tt | ¡ƒd kst‚tt | ¡ƒd ks(t‚tt | ¡ƒd ks@t‚tt | ¡ƒd ksXt‚tt | ¡ƒd kspt‚tt | ¡ƒd ksˆt‚tt | ¡ƒd ks t‚tt | ¡ƒd ks¸t‚tt | ¡ƒd ksÐt‚d S ©NT)r$   ÚNaNr   r   rG   rH   rI   rJ   ri   rK   rj   rL   rM   rN   rO   rc   rd   rQ   rR   rS   rl   rT   rU   rV   rW   )ÚnanrY   rY   rZ   Útest_nanú   s*    rx   c                  C   s  t ddƒ} tt | ¡ƒdks t‚tt | ¡ƒdks6t‚tt | ¡ƒdksLt‚tt | ¡ƒdksbt‚tt | ¡ƒdksxt‚tt 	| ¡ƒdksŽt‚tt 
| ¡ƒdks¤t‚tt | ¡ƒdksºt‚tt | ¡ƒdksÐt‚tt | ¡ƒdksæt‚tt | ¡ƒdksüt‚tt | ¡ƒdkst‚tt | ¡ƒdks,t‚tt | ¡ƒdksDt‚tt | ¡ƒdks\t‚tt | ¡ƒdkstt‚t ddƒ} tt | ¡ƒdks–t‚tt | ¡ƒdks®t‚t ddƒ} tt | ¡ƒdksÐt‚tt | ¡ƒdksèt‚t ddƒ} tt | ¡ƒdks
t‚tt | ¡ƒdks"t‚t ddƒ} tt | ¡ƒdksDt‚tt | ¡ƒdks\t‚t ddƒ} tt | ¡ƒdks~t‚tt | ¡ƒdks–t‚t d	dƒ} tt | ¡ƒdks¸t‚tt | ¡ƒdksÐt‚t d	dƒ} tt | ¡ƒdksòt‚tt | ¡ƒdks
t‚d S )
Né   é   TFrE   é   éýÿÿÿrf   éûÿÿÿ)r    r   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   )ÚrrY   rY   rZ   Útest_Rational_number  sL    







r   c                  C   sv  t dƒ} tt | ¡ƒdkst‚tt | ¡ƒdks4t‚tt | ¡ƒdksJt‚tt | ¡ƒdks`t‚tt | ¡ƒdksvt‚tt 	| ¡ƒdksŒt‚tt 
| ¡ƒdks¢t‚tt | ¡ƒdks¸t‚tt | ¡ƒdksÎt‚tt | ¡ƒdksät‚tt | ¡ƒdksút‚tt | ¡ƒdkst‚tt | ¡ƒdks*t‚tt | ¡ƒdksBt‚tt | ¡ƒdksZt‚tt | ¡ƒdksrt‚d S )Né   TF)r0   r   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_sqrt_2B  s"    r   c                  C   s  t j} tt | ¡ƒdkst‚tt | ¡ƒdks2t‚tt | ¡ƒdksHt‚tt | ¡ƒdks^t‚tt 	| ¡ƒdkstt‚tt 
| ¡ƒdksŠt‚tt | ¡ƒdks t‚tt | ¡ƒdks¶t‚tt | ¡ƒdksÌt‚tt | ¡ƒdksât‚tt | ¡ƒdksøt‚tt | ¡ƒdkst‚tt | ¡ƒdks(t‚tt | ¡ƒdks@t‚tt | ¡ƒdksXt‚tt | ¡ƒdkspt‚tt | ¡ƒdksˆt‚t jd } tt | ¡ƒdksªt‚tt | ¡ƒdksÂt‚tt | ¡ƒdksÚt‚tt | ¡ƒdksòt‚tt 	| ¡ƒdks
t‚tt 
| ¡ƒdks"t‚tt | ¡ƒdks:t‚tt | ¡ƒdksRt‚tt | ¡ƒdksjt‚tt | ¡ƒdks‚t‚tt | ¡ƒdksšt‚tt | ¡ƒdks²t‚tt | ¡ƒdksÊt‚tt | ¡ƒdksât‚tt | ¡ƒdksút‚tt | ¡ƒdkst‚tt | ¡ƒdks*t‚dt j } tt | ¡ƒdksLt‚tt | ¡ƒdksdt‚tt | ¡ƒdks|t‚tt | ¡ƒdks”t‚tt 	| ¡ƒdks¬t‚tt 
| ¡ƒdksÄt‚tt | ¡ƒdksÜt‚tt | ¡ƒdksôt‚tt | ¡ƒdkst‚tt | ¡ƒdks$t‚tt | ¡ƒdks<t‚tt | ¡ƒdksTt‚tt | ¡ƒdkslt‚tt | ¡ƒdks„t‚tt | ¡ƒdksœt‚tt | ¡ƒdks´t‚tt | ¡ƒdksÌt‚t jd } tt | ¡ƒdksît‚tt | ¡ƒdkst‚tt | ¡ƒdkst‚tt | ¡ƒdks6t‚tt 	| ¡ƒdksNt‚tt 
| ¡ƒdksft‚tt | ¡ƒdks~t‚tt | ¡ƒdks–t‚tt | ¡ƒdks®t‚tt | ¡ƒdksÆt‚tt | ¡ƒdksÞt‚tt | ¡ƒdksöt‚tt | ¡ƒdkst‚tt | ¡ƒdks&t‚tt | ¡ƒdks>t‚tt | ¡ƒdksVt‚tt | ¡ƒdksnt‚dt j d } tt | ¡ƒdks”t‚tt | ¡ƒdks¬t‚tt | ¡ƒdksÄt‚tt | ¡ƒdksÜt‚tt 	| ¡ƒdksôt‚tt 
| ¡ƒdkst‚tt | ¡ƒdks$t‚tt | ¡ƒdks<t‚tt | ¡ƒdksTt‚tt | ¡ƒdkslt‚tt | ¡ƒdks„t‚tt | ¡ƒdksœt‚tt | ¡ƒdks´t‚tt | ¡ƒdksÌt‚tt | ¡ƒdksät‚tt | ¡ƒdksüt‚tt | ¡ƒdkst‚d S ©NTFrE   r€   )r$   ÚPir   r   rG   rH   rI   rJ   ri   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_piV  s´    


r„   c                  C   sŒ  t j} tt | ¡ƒdkst‚tt | ¡ƒdks2t‚tt | ¡ƒdksHt‚tt | ¡ƒdks^t‚tt 	| ¡ƒdkstt‚tt 
| ¡ƒdksŠt‚tt | ¡ƒdks t‚tt | ¡ƒdks¶t‚tt | ¡ƒdksÌt‚tt | ¡ƒdksât‚tt | ¡ƒdksøt‚tt | ¡ƒdkst‚tt | ¡ƒdks(t‚tt | ¡ƒdks@t‚tt | ¡ƒdksXt‚tt | ¡ƒdkspt‚tt | ¡ƒdksˆt‚d S rh   )r$   ZExp1r   r   rG   rH   rI   rJ   ri   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_E·  s$    r…   c                  C   sŒ  t j} tt | ¡ƒdkst‚tt | ¡ƒdks2t‚tt | ¡ƒdksHt‚tt | ¡ƒdks^t‚tt 	| ¡ƒdkstt‚tt 
| ¡ƒdksŠt‚tt | ¡ƒdks t‚tt | ¡ƒdks¶t‚tt | ¡ƒdksÌt‚tt | ¡ƒdksât‚tt | ¡ƒdksøt‚tt | ¡ƒdkst‚tt | ¡ƒdks(t‚tt | ¡ƒdks@t‚tt | ¡ƒdksXt‚tt | ¡ƒdkspt‚tt | ¡ƒdksˆt‚d S rh   )r$   ZGoldenRatior   r   rG   rH   rI   rJ   ri   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_GoldenRatioÌ  s$    r†   c                  C   sŒ  t j} tt | ¡ƒdkst‚tt | ¡ƒdks2t‚tt | ¡ƒdksHt‚tt | ¡ƒdks^t‚tt 	| ¡ƒdkstt‚tt 
| ¡ƒdksŠt‚tt | ¡ƒdks t‚tt | ¡ƒdks¶t‚tt | ¡ƒdksÌt‚tt | ¡ƒdksât‚tt | ¡ƒdksøt‚tt | ¡ƒdkst‚tt | ¡ƒdks(t‚tt | ¡ƒdks@t‚tt | ¡ƒdksXt‚tt | ¡ƒdkspt‚tt | ¡ƒdksˆt‚d S rh   )r$   ZTribonacciConstantr   r   rG   rH   rI   rJ   ri   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_TribonacciConstantá  s$    r‡   c                  C   s€  t } tt | ¡ƒdkst‚tt | ¡ƒdks0t‚tt | ¡ƒdksFt‚tt | ¡ƒdks\t‚tt | ¡ƒdksrt‚tt 	| ¡ƒdksˆt‚tt 
| ¡ƒdksžt‚tt | ¡ƒdks´t‚tt | ¡ƒdksÊt‚tt | ¡ƒdksàt‚tt | ¡ƒdksöt‚tt | ¡ƒdkst‚tt | ¡ƒdks&t‚tt | ¡ƒdks>t‚tt | ¡ƒdksVt‚tt | ¡ƒdksnt‚tt | ¡ƒdks†t‚dt  } tt | ¡ƒdks¦t‚tt | ¡ƒdks¾t‚tt | ¡ƒdksÖt‚tt | ¡ƒdksît‚tt | ¡ƒdkst‚tt 	| ¡ƒdkst‚tt 
| ¡ƒdks6t‚tt | ¡ƒdksNt‚tt | ¡ƒdksft‚tt | ¡ƒdks~t‚tt | ¡ƒdks–t‚tt | ¡ƒdks®t‚tt | ¡ƒdksÆt‚tt | ¡ƒdksÞt‚tt | ¡ƒdksöt‚tt | ¡ƒdkst‚tt | ¡ƒdks&t‚t dt   } tt | ¡ƒdksJt‚tt | ¡ƒdksbt‚tt | ¡ƒdkszt‚tt | ¡ƒdks’t‚tt | ¡ƒdksªt‚tt 	| ¡ƒdksÂt‚tt 
| ¡ƒdksÚt‚tt | ¡ƒdksòt‚tt | ¡ƒdks
t‚tt | ¡ƒdks"t‚tt | ¡ƒdks:t‚tt | ¡ƒdksRt‚tt | ¡ƒdksjt‚tt | ¡ƒdks‚t‚tt | ¡ƒdksšt‚tt | ¡ƒdks²t‚tt | ¡ƒdksÊt‚t t  } tt | ¡ƒdksêt‚tt | ¡ƒdkst‚t  t  } tt | ¡ƒdks$t‚tt | ¡ƒdks<t‚dt  t  } tt | ¡ƒdks`t‚tt | ¡ƒdksxt‚dt  } tt | ¡ƒdks˜t‚tt | ¡ƒdks°t‚dt  } tt | ¡ƒdksÐt‚tt | ¡ƒdksèt‚dt  t  } tt | ¡ƒdkst‚tt | ¡ƒdks$t‚t t d  } tt | ¡ƒdksHt‚tt | ¡ƒdks`t‚t t d  } tt | ¡ƒdks„t‚tt | ¡ƒdksœt‚t d } tt | ¡ƒdks¼t‚tt | ¡ƒdksÔt‚t d } tt | ¡ƒdksôt‚tt | ¡ƒdkst‚dt  } tt | ¡ƒdks,t‚tt | ¡ƒdksDt‚t d } tt | ¡ƒdksdt‚tt | ¡ƒdks|t‚d S )NTFrE   ry   rf   r€   r   )r   r   r   rG   rH   rI   rJ   ri   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rY   rZ   Útest_Iö  s´    
rˆ   c                  C   s 3  t dƒ\} }}tt | ¡ƒd ks$t‚tt | ¡t | ¡ƒdksBt‚tt | ¡t |¡ƒd ks`t‚tt | ¡t | ¡ƒdks~t‚tt | ¡t | ¡ƒd ksœt‚tt | d ¡ƒd ks¶t‚tt | d ¡t | ¡ƒdksØt‚| | }|j\} }tt |¡t | ¡t |¡@ ƒdkst‚tt |¡t | ¡t |¡@ ƒdks>t‚tt |¡t | ¡t |¡@ ƒdksht‚tt |¡t | ¡t |¡@ ƒdks’t‚tt |¡t | ¡t |¡@ t |¡ @ ƒdksÈt‚tt |¡t | ¡t | ¡ @ t |¡@ ƒdksþt‚tt |¡t | ¡t |¡@ t | ¡ @ t |¡ @ ƒdks@t‚tt |¡t | ¡t |¡ @ ƒdkslt‚tt |¡t | ¡t |¡ @ ƒdks˜t‚tt |¡t | ¡t 	|¡@ ƒdksÂt‚tt |¡t | ¡t 	|¡@ ƒdksìt‚tt |¡t | ¡t |¡ @ t |¡ @ ƒdks$t‚tt |¡t | ¡t | ¡ @ t 	|¡@ ƒdksZt‚tt |¡t | ¡t | ¡ @ t |¡ @ t |¡ @ ƒdksžt‚tt |¡t | ¡ƒd ks¾t‚tt |¡t | ¡ƒd ksÞt‚tt |¡t | ¡t 
|¡@ ƒd kst‚tt |¡t | ¡t 
|¡@ ƒd ks2t‚tt |¡t | ¡t |¡ @ ƒd ks^t‚tt |¡t | ¡t | ¡ @ t 
|¡@ ƒd ks”t‚tt |¡t | ¡t | ¡ @ t |¡ @ ƒd ksÌt‚tt |¡t | ¡ t |¡ @ ƒd ksút‚tt |¡t 	| ¡t |¡ @ ƒd ks&t‚tt |¡t | ¡ t 	|¡@ ƒd ksRt‚tt |¡t 	| ¡t 	|¡@ ƒdks|t‚tt |¡t 	| ¡t |¡ @ t 
|¡ @ ƒd ks´t‚tt |¡t | ¡ t 
| ¡ @ t 	|¡@ ƒd ksìt‚tt |¡t | ¡ t |¡ @ t 
| ¡ @ t 
|¡ @ ƒdks2t‚tt |¡t |¡ ƒd ksTt‚tt |¡t 
| ¡t |¡ @ ƒd ks€t‚tt |¡t 	|¡ƒd ks t‚tt |¡t 
| ¡t 	|¡@ ƒdksÊt‚tt |¡t 
| ¡t |¡ @ t 
|¡ @ ƒd kst‚tt |¡t 
| ¡ t 	|¡@ ƒd ks.t‚tt |¡t 
| ¡ t |¡ @ t 
|¡ @ ƒdksht‚tt |¡ƒd ks€t‚tt |¡t 
| ¡ƒd ks t‚tt |¡t 
|¡ƒd ksÀt‚tt |¡t 
| ¡t 
|¡@ ƒd ksêt‚tt |¡t 
| ¡t 
|¡ @ ƒd kst‚tt |¡t 
| ¡ t 
|¡@ ƒd ksBt‚tt |¡t 
| ¡ t 
|¡ @ ƒd kspt‚t dƒ\} }}| | | }|j\} }}tt |¡t | ¡t |¡@ t |¡@ ƒdksÊt‚tt |¡t | ¡t |¡@ t |¡@ ƒdksþt‚tt |¡t | ¡t |¡@ t |¡@ ƒdk	s2t‚tt |¡t | ¡t |¡@ t |¡@ ƒdk	sft‚tt |¡t | ¡t |¡@ t |¡ @ ƒdk	sœt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdk	sÐt‚tt |¡t | ¡t |¡@ t |¡@ ƒd k
st‚tt |¡t | ¡t |¡@ ƒd k
s.t‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd k
sbt‚tt |¡t | ¡t |¡@ t |¡@ ƒdk
s–t‚tt |¡t | ¡t |¡@ t |¡@ ƒdk
sÊt‚tt |¡t | ¡t |¡@ t |¡@ ƒdk
sþt‚tt |¡t | ¡t |¡@ t |¡ @ ƒdks4t‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdksht‚tt |¡t | ¡t |¡@ t |¡@ ƒd ksœt‚tt |¡t | ¡t |¡@ ƒd ksÆt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ksút‚tt |¡t | ¡t |¡@ t |¡@ ƒdks.t‚tt |¡t | ¡t |¡@ t |¡@ ƒdksbt‚tt |¡t | ¡t |¡@ t |¡ @ ƒdks˜t‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdksÌt‚tt |¡t | ¡t |¡@ t |¡@ ƒd ks t‚tt |¡t | ¡t 
|¡@ t |¡@ ƒd ks4t‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ksht‚tt |¡t | ¡t |¡@ t |¡@ ƒdksœt‚tt |¡t | ¡t |¡@ t |¡ @ ƒd ksÒt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd kst‚tt |¡t | ¡t |¡@ t |¡@ ƒdks:t‚tt |¡t | ¡t |¡@ ƒd ksdt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ks˜t‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd ksÐt‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd kst‚tt |¡t | ¡t |¡ @ t |¡@ ƒd ks<t‚tt |¡t | ¡t |¡ @ ƒd ksht‚tt |¡t | ¡t |¡ @ t 
|¡@ ƒd ksžt‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒdksÒt‚tt |¡t | ¡t 	|¡@ t |¡@ ƒd kst‚tt |¡t | ¡t 	|¡@ ƒd ks0t‚tt |¡t | ¡t 	|¡@ t 
|¡@ ƒdksdt‚tt |¡t | ¡t |¡@ t |¡@ ƒd ks˜t‚tt |¡t | ¡t |¡@ ƒd ksÂt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ksöt‚tt |¡t | ¡ƒd kst‚tt |¡t | ¡t 
|¡@ ƒd ks@t‚tt |¡t | ¡t 
|¡@ t 
|¡@ ƒd kstt‚tt |¡t | ¡t |¡@ t |¡@ ƒdks¨t‚tt |¡t | ¡t |¡@ t |¡@ ƒdksÜt‚tt |¡t | ¡t |¡@ t |¡@ ƒdkst‚tt |¡t | ¡t |¡@ t |¡ @ ƒdksFt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdkszt‚tt |¡t | ¡t |¡@ t |¡@ ƒd ks®t‚tt |¡t | ¡t |¡@ ƒd ksØt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd kst‚tt |¡t | ¡t |¡@ t |¡@ ƒdks@t‚tt |¡t | ¡t |¡@ t |¡@ ƒdkstt‚tt |¡t | ¡t |¡@ t |¡ @ ƒdksªt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdksÞt‚tt |¡t | ¡t |¡@ t |¡@ ƒd kst‚tt |¡t | ¡t |¡@ ƒd ks<t‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd kspt‚tt |¡t | ¡t |¡@ t |¡@ ƒdks¤t‚tt |¡t | ¡t |¡@ t |¡ @ ƒd ksÚt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd kst‚tt |¡t | ¡t |¡@ t |¡@ ƒdksBt‚tt |¡t | ¡t |¡@ ƒd kslt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ks t‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd ksØt‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd kst‚tt |¡t | ¡t |¡ @ t |¡@ ƒd ksDt‚tt |¡t | ¡t |¡ @ ƒd kspt‚tt |¡t | ¡t |¡ @ t 
|¡@ ƒd ks¦t‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒdksÚt‚tt |¡t | ¡t 	|¡@ t |¡@ ƒd kst‚tt |¡t | ¡t 	|¡@ ƒd ks8t‚tt |¡t | ¡t 	|¡@ t 
|¡@ ƒdkslt‚tt |¡t | ¡t |¡@ t |¡@ ƒd ks t‚tt |¡t | ¡t |¡@ ƒd ksÊt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ksþt‚tt |¡t | ¡ƒd kst‚tt |¡t | ¡t 
|¡@ ƒd ksHt‚tt |¡t | ¡t 
|¡@ t 
|¡@ ƒd ks|t‚tt |¡t | ¡t |¡@ t |¡@ ƒdks°t‚tt |¡t | ¡t |¡@ t |¡@ ƒdksät‚tt |¡t | ¡t |¡@ t |¡ @ ƒdkst‚tt |¡t | ¡t |¡@ t 	|¡@ ƒdksNt‚tt |¡t | ¡t |¡@ t |¡@ ƒd ks‚t‚tt |¡t | ¡t |¡@ ƒd ks¬t‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ksàt‚tt |¡t | ¡t |¡@ t |¡@ ƒdkst‚tt |¡t | ¡t |¡@ t |¡ @ ƒd ksJt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd ks~t‚tt |¡t | ¡t |¡@ t |¡@ ƒdks²t‚tt |¡t | ¡t |¡@ ƒd ksÜt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd kst‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd ksHt‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd ks~t‚tt |¡t | ¡t |¡ @ t |¡@ ƒd ks´t‚tt |¡t | ¡t |¡ @ ƒd ksàt‚tt |¡t | ¡t |¡ @ t 
|¡@ ƒd kst‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒdksJt‚tt |¡t | ¡t 	|¡@ t |¡@ ƒd ks~t‚tt |¡t | ¡t 	|¡@ ƒd ks¨t‚tt |¡t | ¡t 	|¡@ t 
|¡@ ƒdksÜt‚tt |¡t | ¡t |¡@ t |¡@ ƒd kst‚tt |¡t | ¡t |¡@ ƒd ks:t‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd ksnt‚tt |¡t | ¡ƒd ksŽt‚tt |¡t | ¡t 
|¡@ ƒd ks¸t‚tt |¡t | ¡t 
|¡@ t 
|¡@ ƒd ksìt‚tt |¡t | ¡t |¡@ t |¡@ ƒdks t‚tt |¡t | ¡t |¡@ t |¡ @ ƒd ksVt‚tt |¡t | ¡t |¡@ t 	|¡@ ƒd ksŠt‚tt |¡t | ¡t |¡@ t |¡@ ƒdks¾t‚tt |¡t | ¡t |¡@ ƒd ksèt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd kst‚tt |¡t | ¡t |¡ @ t |¡ @ ƒd ksTt‚tt |¡t | ¡t |¡ @ t 	|¡@ ƒd ksŠt‚tt |¡t | ¡t |¡ @ t |¡@ ƒd ksÀt‚tt |¡t | ¡t |¡ @ ƒd ksìt‚tt |¡t | ¡t |¡ @ t 
|¡@ ƒd k s"t‚tt |¡t | ¡t 	|¡@ t 	|¡@ ƒd k sVt‚tt |¡t | ¡t 	|¡@ t |¡@ ƒd k sŠt‚tt |¡t | ¡t 	|¡@ ƒd k s´t‚tt |¡t | ¡t 	|¡@ t 
|¡@ ƒd k sèt‚tt |¡t | ¡t |¡@ t |¡@ ƒdk!st‚tt |¡t | ¡t |¡@ ƒd k!sFt‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd k!szt‚tt |¡t | ¡ƒd k!sšt‚tt |¡t | ¡t 
|¡@ ƒd k!sÄt‚tt |¡t | ¡t 
|¡@ t 
|¡@ ƒd k!søt‚tt |¡t | ¡ t |¡ @ t |¡ @ ƒd k"s2t‚tt |¡t | ¡ t 	|¡@ t |¡ @ ƒd k"sjt‚tt |¡t | ¡ t |¡ @ t |¡@ ƒd k"s¢t‚tt |¡t | ¡ t |¡ @ ƒd k"sÐt‚tt |¡t | ¡ t |¡ @ t 
|¡@ ƒd k#st‚tt |¡t | ¡ t 	|¡@ t 	|¡@ ƒd k#s>t‚tt |¡t | ¡ t 	|¡@ t |¡@ ƒd k#stt‚tt |¡t | ¡ t 	|¡@ ƒd k#s t‚tt |¡t | ¡ t 	|¡@ t 
|¡@ ƒd k#sÖt‚tt |¡t | ¡ t |¡@ t |¡@ ƒd k$st‚tt |¡t | ¡ t |¡@ ƒd k$s8t‚tt |¡t | ¡ t |¡@ t 
|¡@ ƒd k$snt‚tt |¡t | ¡ ƒd k$st‚tt |¡t | ¡ t 
|¡@ ƒd k$s¼t‚tt |¡t | ¡ t 
|¡@ t 
|¡@ ƒd k$sòt‚tt |¡t 	| ¡t 	|¡@ t 	|¡@ ƒdk%s&t‚tt |¡t 	| ¡t 	|¡@ t |¡@ ƒd k%sZt‚tt |¡t 	| ¡t 	|¡@ ƒd k%s„t‚tt |¡t 	| ¡t 	|¡@ t 
|¡@ ƒdk%s¸t‚tt |¡t 	| ¡t |¡@ t |¡@ ƒd k%sìt‚tt |¡t 	| ¡t |¡@ ƒd k&st‚tt |¡t 	| ¡t |¡@ t 
|¡@ ƒd k&sJt‚tt |¡t 	| ¡ƒd k&sjt‚tt |¡t 	| ¡t 
|¡@ ƒd k&s”t‚tt |¡t 	| ¡t 
|¡@ t 
|¡@ ƒdk&sÈt‚tt |¡t | ¡t |¡@ t |¡@ ƒd k&süt‚tt |¡t | ¡t |¡@ ƒd k's&t‚tt |¡t | ¡t |¡@ t 
|¡@ ƒd k'sZt‚tt |¡t | ¡ƒd k'szt‚tt |¡t | ¡t 
|¡@ ƒd k's¤t‚tt |¡t | ¡t 
|¡@ t 
|¡@ ƒd k'sØt‚tt |¡ƒd k'sðt‚tt |¡t 
|¡ƒd k(st‚tt |¡t 
|¡t 
|¡@ ƒd k(s:t‚tt |¡t 
| ¡t 
|¡@ t 
|¡@ ƒd k(snt‚tt d|  ¡ƒd k(sŠt‚tt d|  ¡t | ¡ƒdk(s®t‚t dƒ\} }}| | }|j\} }tt |¡t | ¡t |¡@ ƒdk(søt‚tt |¡t | ¡t |¡ @ ƒdk)s$t‚tt |¡t | ¡ƒd k)sDt‚tt |¡t | ¡ t |¡@ ƒdk)spt‚tt |¡t | ¡ t |¡ @ ƒdk)sžt‚tt |¡t | ¡ ƒd k)sÀt‚tt |¡t |¡ƒd k)sàt‚tt |¡t |¡ ƒd k*st‚tt |¡ƒd k*st‚| | | }|j\} }}tt |¡t | ¡t |¡@ t |¡@ ƒdk*sft‚tt |¡t | ¡t |¡@ t |¡ @ ƒdk*sœt‚tt |¡t | ¡t |¡@ ƒd k*sÆt‚tt |¡t | ¡t |¡ @ t |¡@ ƒdk*süt‚tt |¡t | ¡t |¡ @ t |¡ @ ƒdk+s4t‚tt |¡t | ¡t |¡ @ ƒd k+s`t‚tt |¡t | ¡t |¡@ ƒd k+sŠt‚tt |¡t | ¡t |¡ @ ƒd k+s¶t‚tt |¡t | ¡ƒd k+sÖt‚tt |¡t | ¡ t |¡@ t |¡@ ƒdk,st‚tt |¡t | ¡ t |¡@ t |¡ @ ƒdk,sDt‚tt |¡t | ¡ t |¡@ ƒd k,spt‚tt |¡t | ¡ t |¡ @ t |¡@ ƒdk,s¨t‚tt |¡t | ¡ t |¡ @ t |¡ @ ƒdk,sât‚tt |¡t | ¡ t |¡ @ ƒd k-st‚tt |¡t | ¡ t |¡@ ƒd k-s<t‚tt |¡t | ¡ t |¡ @ ƒd k-sjt‚tt |¡t | ¡ ƒd k-sŒt‚tt |¡t |¡t |¡@ ƒd k-s¶t‚tt |¡t |¡t |¡ @ ƒd k-sât‚tt |¡t |¡ƒd k.st‚tt |¡t |¡ t |¡@ ƒd k.s.t‚tt |¡t |¡ t |¡ @ ƒd k.s\t‚tt |¡t |¡ ƒd k.s~t‚tt |¡t |¡ƒd k.sžt‚tt |¡t |¡ ƒd k.sÀt‚tt |¡t |¡ t | ¡@ t |¡@ t |¡@ ƒd k/s t‚tt |¡t | ¡t |¡ @ t |¡@ t |¡ @ t |¡@ ƒdk/sLt‚t dƒ\} }}tt | d ¡ƒd k/svt‚tt d|  ¡ƒd k/s’t‚tt d|  ¡t | ¡ƒdk/s¶t‚tt | |  ¡ƒd k/sÒt‚tt tj|  ¡ƒd k/sðt‚tt tj|  ¡t 
| ¡ƒdk0st‚tt tj|  ¡t | ¡ƒd k0s<t‚tt d|  ¡t | ¡ƒdk0s`t‚tt t| ƒ¡ƒd k0s|t‚tt d|  ¡t | ¡ ƒdk0s¢t‚tt | d ¡t | ¡ ƒdk0sÈt‚tt t| ƒ¡ƒdk0sät‚tt t| ƒ¡t | ¡ ƒdk1s
t‚tt t| ƒ¡ƒd k1s&t‚tt t| ƒ¡t | ¡ƒd k1sJt‚tt t| ƒ¡t | ¡ ƒdk1spt‚tt t| ƒ¡t | ¡ƒdk1s”t‚tt t| ƒ¡t | ¡ƒdk1s¸t‚tt t| ƒ¡ƒd k1sÔt‚tt t| ƒ¡t | ¡ƒdk1søt‚tt tdƒ¡ƒdk2st‚tt t| ƒ¡ƒdk2s0t‚tt t| ƒ¡t | ¡ ƒdk2sVt‚tt t| ƒ¡ƒdk2srt‚tt t| ƒ¡t | ¡ ƒdk2s˜t‚tt dt| ƒ ¡ƒdk2s¸t‚tt t| ƒd ¡ƒdk2sØt‚tt t| ƒd ¡ƒdk2søt‚tt t| ƒt| ƒ ¡ƒdk3st‚d S )Nzx,y,zTrE   Fr€   )r'   r   r   rS   rH   rL   rj   ÚargsrO   rm   rk   rP   rn   rq   Zextended_nonzeror$   ZHalfr0   r-   r/   rd   rl   r.   r7   r5   )r   r   r   ÚarY   rY   rZ   Útest_bounded`  s„   "
****
ÿÿ
ÿÿ
(
ÿÿ
,,ÿÿ
ÿÿ

ÿÿ
ÿÿ
*
ÿÿ
  ÿÿ
ÿÿ
,ÿÿ

ÿÿ
.
ÿÿ
ÿÿ
ÿÿ

ÿÿ
 ÿÿ
 
ÿ
ÿÿ
"
ÿÿ
 ÿÿ

ÿ
ÿÿ
ÿÿ
 
ÿÿ
  ÿÿ

ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
*ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
*ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
,ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
 ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
*ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
*ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
,ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
 ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
*ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿÿ
ÿÿ
ÿÿ
,ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
 ÿÿ
ÿÿ
ÿÿÿ
ÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ

ÿ
ÿÿ

ÿÿÿ

ÿÿÿ

ÿÿ

ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
 ÿÿ
ÿÿÿ
 
ÿÿ

ÿÿ
 ÿÿ
. ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
"ÿÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
 ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
 ÿÿ
ÿÿÿ
 ÿÿ
ÿÿÿ
$
*, ,." "ÿÿ

ÿÿ
*ÿÿ

ÿÿ
,*, ÿÿ

ÿÿ
, ÿÿ
 
ÿÿ
.,."*, ,." "ÿÿÿ
ÿ
ÿþþ
$&&$&&&$&$$$&&   r‹   c                   C   s@   t t ttƒt ¡ƒdkst‚t t ttƒt ¡ƒdks<t‚dS )z4We need to support relations in ask for this to workTN)r   r   rS   r7   r   rH   r5   rY   rY   rY   rZ   Útest_bounded_xfailS  s    rŒ   c                   C   s²  t t t¡ƒdkst‚t t t¡t t¡ ƒdks6t‚t t t¡t t¡ƒdksTt‚t t t¡t t¡ƒdksrt‚t t t¡t t¡ƒdkst‚t t t¡t t¡ƒdks®t‚t t t¡t t	¡ ƒdksÎt‚t t dt ¡ƒdksèt‚t t dt ¡t t¡ ƒdkst‚t t td ¡ƒdks*t‚t t td ¡t t¡ ƒdksPt‚t t td ¡ƒdkslt‚t t td ¡t t¡ ƒdks’t‚t t t
tƒ¡ƒdks®t‚dS )zdBy default objects are Q.commutative that is why it returns True
    for both key=True and key=FalseTFr€   rE   N)r   r   rG   r   rH   rL   rN   rK   rO   r   r/   rY   rY   rY   rZ   Útest_commutativeZ  s      &&&r   c                   C   sö  t t t¡ƒd kst‚t t t¡t t¡ƒdks4t‚t t t¡t t¡ƒd ksRt‚t t t¡t t¡ ƒdksrt‚t t t¡t t¡ƒdkst‚t t t¡t t¡ ƒd ks°t‚t t t¡t t¡ƒdksÎt‚t t t¡t t¡ƒdksìt‚t t t¡t 	t¡ƒdkst‚t t t¡t 
t¡ƒdks,t‚t t t¡t t¡ƒdksLt‚t t td ¡t t¡ƒdkspt‚t t td ¡t t¡ƒdks”t‚t t td ¡t t¡ƒdks¸t‚t t td ¡t t¡ƒdksÜt‚t t td ¡t 
t¡ƒdks t‚t t td ¡t t¡ƒdks$t‚t t td ¡t t¡ƒdksHt‚t t td ¡t t¡ƒdkslt‚t t tt ¡t t¡t t¡@ ƒdksšt‚t t tt ¡t t¡t 
t¡@ ƒdksÈt‚t t dt d ¡t t¡ƒdksðt‚t t dt d ¡t t¡ƒdkst‚t t dt d ¡t 	t¡ƒdks@t‚t t dt d ¡t t¡ƒdksht‚t t dt d ¡t t¡ƒdkst‚t t dt d ¡t 
t¡ƒdks¸t‚t t dt d ¡t t¡ƒdksàt‚t t dt d ¡t t¡ƒdkst‚t t dt d ¡t t¡ƒdks0t‚t t td ¡t t¡ƒdksTt‚t t td ¡t t¡ƒdksxt‚t t td ¡t 	t¡ƒdksœt‚t t td ¡t t¡ƒdksÀt‚t t td ¡t t¡ƒdksät‚t t td ¡t 
t¡ƒdkst‚t t td ¡t t¡ƒdks,t‚t t td ¡t t¡ƒdksPt‚t t td ¡t t¡ƒdkstt‚t t dt ¡t t¡ƒdks˜t‚t t dt ¡t t¡ƒdks¼t‚t t dt ¡t 	t¡ƒdksàt‚t t dt ¡t t¡ƒdkst‚t t dt ¡t t¡ƒdks(t‚t t dt ¡t 
t¡ƒdksLt‚t t dt ¡t t¡ƒdkspt‚t t dt ¡t t¡ƒdks”t‚t t dt ¡t t¡ƒdks¸t‚t t tt ¡t t¡t t¡@ ƒdksæt‚t t ttƒ¡ƒdkst‚t t tdt d ƒ¡ƒdks&t‚t t ttƒ¡ƒdksBt‚t t tdt d ƒ¡ƒdksft‚t t ttƒ¡ƒdks‚t‚t t ttƒ¡ƒdksžt‚t t ttƒ¡ƒdksºt‚t t ttƒ¡ƒdksÖt‚t t ttƒ¡ƒdksòt‚d S r‚   )r   r   rL   r   rH   r   rK   rJ   rM   rO   rN   ri   rI   rQ   rR   r7   r5   r.   r*   r,   r+   rY   rY   rY   rZ   Útest_complexq  st         $$$$$$$$..((((((((($$$$$$$$$$$$$$$$$$.$$rŽ   c                   C   sŽ  t t t¡ƒd kst‚t t t¡t t¡ƒd ks4t‚t t t¡t t¡ ƒdksTt‚t t t¡t t¡ƒd ksrt‚t t t¡t t¡ƒd kst‚t t dt ¡ƒd ksªt‚t t dt ¡t t¡ƒdksÌt‚t t dt ¡t t¡ƒdksît‚t t dt ¡t t¡ƒdkst‚t t dt ¡t 	t¡ƒdks6t‚t t dt ¡t t¡ ƒd ks\t‚t t dt ¡t t¡ƒd ks€t‚t t dt ¡t t¡ƒdks¤t‚t t dt ¡t 	t¡ƒdksÈt‚t t td ¡t 	t¡ƒdksìt‚t t td ¡t t¡ƒdkst‚t t td ¡t 	t¡ƒdks4t‚t t td ¡t t¡ƒdksXt‚t t dt ¡t 	t¡ƒdks|t‚t t dt ¡t 	t¡ƒdks t‚t t tt
 ¡t 	t¡t 	t
¡@ ƒdksÎt‚t t tt
 ¡t 	t¡t t
¡@ ƒdksüt‚t t tt
 ¡t t¡t t
¡@ ƒdks*t‚t t dt d ¡t t¡ƒdksRt‚t t dt t
 ¡t t¡t t¡@ ƒd ks„t‚t t dt t
 ¡t t¡t t¡@ ƒd ks¶t‚t t tt
 t ¡t 	t¡t 	t
¡@ t t¡@ ƒdksòt‚t t tt
 t t ¡t 	t¡t 	t
¡@ t t¡@ t t¡@ ƒd ks<t‚t t ttƒ¡t t¡ƒdks`t‚t t ttƒ¡t t¡ ƒd ks†t‚t t ttƒ¡t t¡ƒdksªt‚t t ttƒ¡t t¡ ƒd ksÐt‚t t ttƒ¡t t¡ƒdksôt‚t t ttƒ¡t t¡ƒdkst‚t t dt ¡t t¡ƒdks<t‚t t td ¡t t¡ƒdks`t‚t t td ¡t 	t¡ƒdks„t‚t t dt ¡t t¡ƒd ks¨t‚t t td ¡ƒd ksÄt‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd ksþt‚t t tt ¡t 	t¡t t¡@ t t¡ @ ƒdks8t‚t t tt ¡t t¡t t¡@ t t¡@ ƒdkspt‚t t tt ¡t 	t¡t t¡@ t t¡@ ƒdks¨t‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd ksât‚t t tt ¡t t¡t t¡@ t t¡@ ƒd kst‚t t tt ¡t 	t¡t t¡@ t t¡ @ ƒd ksTt‚t t tt ¡t 	t¡t t¡@ t t¡@ ƒd ksŒt‚t t tt ¡t t¡ƒd ks°t‚t t tt ¡t 	t¡ƒd ksÔt‚t t tt
 ¡t t¡t t
¡@ ƒd kst‚t t tt ¡t t¡ƒd ks&t‚t t ttt
  ¡t t¡t 	t
¡@ ƒdksXt‚t t ttt
  ¡t t¡t t
¡@ ƒd ksŠt‚d S )NFr€   Try   rE   é   rf   )r   r   rQ   r   rH   rI   rJ   rO   rM   rR   r   r   r   r*   r,   r+   rK   r   r   r	   rP   r
   rY   rY   rY   rZ   Útest_even_query½  sr     ""$$&$$$$$$$$$...(22<&ÿÿ
$&$&$$$$$$::88:8:8$$.$2r   c                   C   s€   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdks>t‚t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdks|t‚d S ru   )	r   r   rQ   r   r   r   rI   rR   rH   rY   rY   rY   rZ   Ú1test_evenness_in_ternary_integer_product_with_odd  s    >r‘   c                   C   sB   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒd ks>t‚d S ©N)r   r   rQ   r   r   r   rI   rH   rY   rY   rY   rZ   Ú2test_evenness_in_ternary_integer_product_with_even  s    r“   c                   C   s  t t t¡t t¡ƒdkst‚t t t¡t t¡ƒdks<t‚t t t¡t t¡ƒdksZt‚t t t¡t t¡ƒdksxt‚t t t¡t 	t¡ƒdks–t‚t t t ¡t t¡ƒdks¶t‚t t t ¡t t¡ƒdksÖt‚t t tt
j ¡t t¡ƒdksút‚t t t¡t t¡ƒd kst‚d S ru   )r   r   rj   r   rm   rH   rO   rd   rP   rn   r$   ÚInfinityrK   rl   rY   rY   rY   rZ   Útest_extended_real  s      $r•   c                  C   sÔ  t t t¡t t¡ƒdkst‚t t t¡t t¡ƒdks<t‚t t t¡t t¡ƒd ksZt‚t t t¡t t¡ƒd ksxt‚t t t¡t 	t¡ƒd ks–t‚t t t¡t 
t¡ƒd ks´t‚t t t¡t t¡ ƒdksÔt‚t t dt ¡t t¡ƒdksöt‚t t dt ¡t t¡ƒdkst‚t t dt ¡t t¡ƒdks>t‚t t dt ¡t t¡ƒdksbt‚t t dt ¡t t¡ƒdks†t‚t t td ¡t t¡ƒdksªt‚t t td ¡t t¡ƒdksÎt‚t t td ¡t t¡ƒdksòt‚t t td ¡t t¡ƒdkst‚t t td ¡t t¡ƒdks:t‚t t dt ¡t t¡ƒdks^t‚t t dt ¡t t¡ƒdks‚t‚t t dt ¡t t¡ƒdks¦t‚t t dt ¡t t¡ƒdksÊt‚t t dt ¡t t¡ƒdksît‚t t dt ¡t t¡ƒdkst‚t t dt ¡t t¡ƒdks6t‚t t dt ¡t t¡ƒdksZt‚t t dt ¡t t¡ƒdks~t‚t t dt ¡t t¡ƒdks¢t‚t t t¡t t¡ ƒdksÄt‚t t tt ¡t t¡t t¡@ ƒd ksòt‚t t tt ¡t t¡t t¡@ ƒdks t‚t t tt ¡t t¡t t¡@ ƒdksNt‚t t tt ¡t t¡t t¡@ ƒdks|t‚t t tt ¡t t¡t t¡@ ƒdksªt‚t t tt ¡t t¡t t¡@ ƒdksØt‚ttttttfD ]´} t t | dƒ¡ƒdkst‚t t | ddd¡ƒdks(t‚t t | ddd¡ƒdksHt‚t t | tƒ¡t t¡ƒd kslt‚t t | tƒ¡t t¡t 
t¡@ ƒdksèt‚qèttfD ]¸}t t |dƒ¡ƒdksÆt‚t t |ddd¡ƒdksæt‚t t |ddd¡ƒdkst‚t t |tƒ¡t t¡ƒd ks*t‚t t |tƒ¡t t¡t 
td ¡@ ƒdks¦t‚q¦ttfD ]f}t t |dƒ¡ƒdksˆt‚t t |ddd¡ƒdks¨t‚t t |tƒ¡t t¡ƒdksht‚qhd S )NTFr€   rE   r   ©Úevaluater   )r   r   rJ   r   rI   rH   rM   rK   rO   rP   rc   ri   rQ   rR   r   r.   r7   r8   r3   r4   r5   r/   r1   r6   r2   ©ÚfÚgÚhrY   rY   rZ   Útest_rational  sd     "$$$$$$$$$$$$$$$$$$$"......  $2  $6 rœ   c                   C   sX  t t t¡ƒd kst‚t t t¡t t¡ƒd ks4t‚t t t¡t t¡ƒdksRt‚t t t¡t t¡ƒdkspt‚t t t¡t t¡ƒdksŽt‚t t t¡t 	t¡ƒdks¬t‚t t td ¡t t¡ƒd ksÎt‚t t td ¡t 
t¡ƒd ksðt‚t t td ¡t t¡ƒdkst‚t t td ¡t t¡ƒdks8t‚t t td ¡t t¡ƒdks\t‚t t tt ¡t t¡ƒd ks€t‚t t tt ¡t 
t¡ƒd ks¤t‚t t tt ¡t t¡ƒdksÈt‚t t tt ¡t t¡ƒd ksìt‚t t tt ¡t t¡ƒdkst‚t t tt ¡t t¡t t¡@ ƒd ks>t‚t t tt ¡t t¡t 
t¡@ ƒd kslt‚t t tt ¡t t¡t t¡@ ƒd ksšt‚t t tt ¡t t¡t t¡@ ƒd ksÈt‚t t tt ¡t t¡t t¡@ ƒd ksöt‚t t tt ¡t t¡t 
t¡@ ƒd ks$t‚t t tt ¡t t¡t t¡@ ƒdksRt‚t t tt ¡t t¡t t¡@ ƒdks€t‚t t tt ¡t t¡t t¡@ ƒdks®t‚t t tt ¡t t¡t 
t¡@ ƒd ksÜt‚t t tt ¡t t¡t t¡@ ƒd ks
t‚t t tt ¡t t¡t t¡@ ƒdks8t‚t t tt ¡t t¡t 
t¡@ ƒd ksft‚t t tt ¡t t¡t t¡@ ƒdks”t‚t t tt ¡t t¡ƒdks¸t‚t t tt ¡t 
t¡ƒd ksÜt‚t t tt ¡t t¡ƒdks t‚t t tt ¡t t¡ƒdks$t‚t t tt ¡t t¡ƒdksHt‚t t tt ¡t t¡t t¡@ ƒdksvt‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdks²t‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdksît‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd ks*t‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd ksft‚t t t¡ƒd ks~t‚t t t¡t t¡ƒdksžt‚t t t¡t t¡ƒdks¾t‚t t td ¡t t¡ƒdksât‚t t td ¡t 
t¡ƒd kst‚t t td ¡t t¡ƒd ks*t‚t t td ¡t t¡ƒdksNt‚t t td ¡t t¡ƒd ksrt‚t t tt ¡t t¡ƒdks–t‚t t tt ¡t 
t¡ƒd ksºt‚t t tt ¡t t¡ƒd ksÞt‚t t tt ¡t t¡ƒdkst‚t t tt ¡t t¡ƒdks&t‚t t t¡t 	t¡ƒdksFt‚t t tt ¡t t¡t t¡@ ƒdkstt‚t t tt ¡t t¡t 
t¡@ ƒd ks¢t‚t t tt ¡t t¡t t¡@ ƒd ksÐt‚t t tt ¡t t¡t t¡@ ƒdksþt‚t t tt ¡t t¡t t¡@ ƒdk	s,t‚t t tt ¡t t¡t 
t¡@ ƒd k	sZt‚t t tt ¡t t¡t t¡@ ƒd k	sˆt‚t t tt ¡t t¡t t¡@ ƒd k	s¶t‚t t tt ¡t t¡t t¡@ ƒd k	sät‚t t tt ¡t t¡t 
t¡@ ƒd k
st‚t t tt ¡t t¡t t¡@ ƒdk
s@t‚t t tt ¡t t¡t t¡@ ƒdk
snt‚t t tt ¡t t¡t 
t¡@ ƒd k
sœt‚t t tt ¡t t¡t t¡@ ƒd k
sÊt‚t t tt ¡t t¡ƒdk
sît‚t t tt ¡t t¡ƒdkst‚t t tt ¡t 
t¡ƒd ks6t‚t t tt ¡t t¡t t¡@ ƒdksdt‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd ks t‚t t tt t ¡t t¡t t¡@ t t¡@ ƒd ksÜt‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdkst‚t t tt t ¡t t¡t t¡@ t t¡@ ƒdksTt‚d S )NFTrE   )r   r   rV   r   rH   rW   rN   rT   rK   rd   rL   r   r   r   rY   rY   rY   rZ   Útest_hermitian_  s(   ""$$$$$$$$ ÿÿ
. ÿÿ
...........$$$$$. ÿÿ
ÿÿ
ÿÿ
ÿÿ
  $$$$$$$$$$  ÿþ
 ÿÿ
 ÿÿ
 ÿÿ
"ÿ
."ÿ
 ÿÿ
......$$$.ÿÿ
ÿÿ
ÿÿ
ÿÿr   c                  C   s^
  t t t¡ƒd kst‚t t t¡t t¡ƒdks4t‚t t t¡t t¡ƒdksRt‚t t td ¡t t¡ƒdkstt‚t t td ¡t t¡ƒdks–t‚t t tt ¡t t¡ƒdks¸t‚t t tt ¡t t¡ƒdksÚt‚t t tt ¡t t¡t t¡@ ƒdkst‚t t tt ¡t t¡t t¡@ ƒdks6t‚t t tt ¡t t¡t t¡@ ƒdksdt‚t t tt ¡t 	t¡t t¡@ ƒd ks’t‚t t tt t
 ¡t t¡t t¡@ t t
¡@ ƒdksÎt‚t t tt t
 ¡t t¡t t¡@ t t
¡@ ƒd ks
t‚t t tt t
 ¡t t¡t t¡@ t t
¡@ ƒdksFt‚t t tt ¡t t¡ƒdksjt‚t t tt ¡t t¡ƒdksŽt‚t t tt ¡t 	t¡ƒd ks²t‚t t tt ¡t t¡t t¡@ ƒdksàt‚t t tt ¡t t¡t t¡@ ƒdkst‚t t tt ¡t t¡ƒd ks2t‚t t tt ¡t t¡ƒd ksVt‚t t tt ¡t t¡ƒdkszt‚t t tt ¡t t¡ƒdksžt‚t t tt ¡t t¡ƒdksÂt‚t t dt t ¡t t¡ƒdksêt‚t t td ¡t t¡ƒdkst‚t t tt ¡t t¡t t¡@ ƒd ks<t‚t t tt ¡t t¡t t¡@ ƒd ksjt‚t t tt ¡t t¡t t¡@ ƒd ks˜t‚t t tt ¡t t¡t t¡@ ƒd ksÆt‚t t tt ¡t t¡t t¡@ ƒd ksôt‚t t tt ¡t t¡t t¡@ ƒd ks"t‚t t tt ¡t t¡t t¡@ ƒdksPt‚t t tt ¡t t¡t t¡@ ƒd ks~t‚t t tt ¡t t¡t t¡@ ƒdks¬t‚t t tt ¡t t¡t t¡@ ƒdksÚt‚t t tt ¡t t¡t t¡@ ƒdkst‚t t tt ¡t t¡t t¡@ ƒd ks6t‚t t tt ¡t t¡t t¡@ t t¡ @ ƒdkspt‚t t tt ¡t t¡t t¡@ ƒd ksžt‚t t tt ¡t t¡t t¡@ t dt ¡@ ƒdksÚt‚t t tt ¡t t¡t t¡@ t dt ¡ @ ƒdkst‚t t tt ¡t t¡t t¡@ ƒd ksFt‚t t tt ¡t t¡t t¡@ t dt ¡ @ ƒdks„t‚t t tt ¡t t¡t t¡@ t dt ¡@ ƒd ksÀt‚t t ttƒ¡ƒdksÜt‚t t tdt ƒ¡ƒdksüt‚t t ttd ƒ¡ƒdkst‚t t ttƒ¡t 	t¡ƒd ks@t‚t t ttƒ¡t t¡ƒd ksdt‚t t ttƒ¡t t¡ƒdksˆt‚t t tttƒƒ¡t 	t¡ƒd ks°t‚t t tttƒƒ¡t t¡ƒd ksØt‚t t tttƒƒ¡ƒdksøt‚t t ttƒt ¡t t¡ƒdk	s t‚tttt t ddtdd} t t | ¡t t¡ƒdk	s^t‚tttt t d ddtdd} t t | ¡t t¡ƒdk	s t‚t t tdt t t ƒt ¡t t¡ƒdk	sÔt‚t t tdt t dd¡ƒdk	süt‚t t ttt d dd¡ƒdk
s$t‚t t tttddƒƒ¡t t¡t t¡@ ƒdk
sZt‚d S )	NFrE   Tr€   r   r–   ry   rz   )r   r   rN   r   rH   rK   rT   r   r   rL   r   rP   rO   rQ   rR   rI   rJ   r/   r.   r%   r#   r    ©ÚeqrY   rY   rZ   Útest_imaginaryÈ  s˜    """".... ÿÿ
ÿÿ
ÿÿ
$$$..$$$$$($............:.<>.><  $$$(( ( " 4((r    c                   C   sR  t t t¡ƒd kst‚t t t¡t t¡ƒdks4t‚t t t¡t t¡ ƒdksTt‚t t t¡t t¡ ƒdkstt‚t t t¡t t¡ ƒd ks”t‚t t t¡t t¡t t¡B ƒdks¼t‚t t dt ¡t t¡ƒdksÞt‚t t dt ¡t t¡ƒdkst‚t t dt ¡t 	t¡ƒdks&t‚t t dt ¡t 
t¡ƒd ksJt‚t t dt ¡t t¡ƒd ksnt‚t t tdƒt ¡t t¡ƒdks–t‚t t tdƒt ¡t t¡ƒd ks¾t‚t t td ¡t t¡ƒdksât‚t t td ¡t t¡ƒdkst‚t t td ¡t t¡ƒd ks*t‚t t td ¡t t¡ƒd ksNt‚d S )NTFr€   ry   )r   r   rI   r   rH   rK   rO   rQ   rR   rT   rJ   r0   rM   rY   rY   rY   rZ   Útest_integer  s"       ("$$$$(($$$r¡   c                   C   sT  t t t¡t t¡ƒdkst‚t t t¡t t¡ƒdks<t‚t t t¡t t¡ ƒdks\t‚t t t¡t t¡ƒdkszt‚t t t¡t t¡ ƒd ksšt‚t t t ¡t t¡ƒdksºt‚t t t ¡t t¡ ƒd ksÜt‚t t t ¡t t¡ƒdksüt‚t t t ¡t t¡ƒdkst‚t t td ¡t t¡ƒdksBt‚t t tt ¡ƒd ks^t‚t t tt ¡t t¡ƒd ks‚t‚t t tt ¡t t¡t t¡@ ƒdks°t‚t t tt ¡t t¡t 	t¡@ ƒdksÞt‚t t dt
 ¡ƒdksút‚t t tt
ƒd tt
ƒd  d ¡ƒd ks*t‚t t t
 t
tdƒd tdƒd    ¡ƒd ks`t‚t t td ¡ƒd ks|t‚t t td ¡t t¡ƒdks t‚t t td ¡t t¡ƒd ksÄt‚t t tt
 ¡t t¡ƒd ksèt‚t t tt ¡ƒd kst‚t t tt ¡t t¡t t¡@ ƒdks2t‚t t tt ¡t t¡t t¡@ ƒdks`t‚t t tt ¡t t¡t t¡@ ƒd ksŽt‚t t tt ¡ƒd ksªt‚t t tt ¡t t¡t t¡@ ƒdksØt‚t t tt ¡t t¡t t¡@ ƒdkst‚t t tt ¡t t¡t t¡@ ƒdks4t‚t t ttƒ¡ƒdksPt‚d S )NTFrE   r€   gffffffö?)r   r   rP   r   rH   rO   rK   rT   r   Únonpositiver   r5   r7   rL   rQ   rR   rI   r*   rY   rY   rY   rZ   Útest_negative.  s<       " "$$..06$$$......r£   c                   C   s¬  t t t¡ƒd kst‚t t t¡t t¡ƒd ks4t‚t t t¡t t¡ƒdksRt‚t t t¡t t¡ƒdkspt‚t t t¡t t¡t t¡B ƒdks˜t‚t t tt ¡ƒd ks²t‚t t tt ¡t t¡t t¡@ ƒdksÞt‚t t tt ¡t t¡t t¡@ ƒd kst‚t t tt ¡t t¡t t¡@ ƒdks:t‚t t dt ¡ƒd ksVt‚t t dt ¡t t¡ƒdkszt‚t t dt ¡t t¡ƒdksžt‚t t tt ¡t t¡ƒd ksÂt‚t t tt ¡t t¡t t¡@ ƒdksðt‚t t tt ¡t t¡ƒdkst‚t t t	tƒ¡ƒd ks0t‚t t t	tƒ¡t t¡ƒdksTt‚t t t
tdt ƒƒ¡ƒdksxt‚t t tdƒd tdƒd  d ¡ƒd ks¨t‚d S )NTr€   FrE   )r   r   rc   r   rH   rK   rO   rP   r   r*   r/   r.   r   r5   r7   rY   rY   rY   rZ   Útest_nonzeroX  s&    (,..$$$.$$$r¤   c                   C   sþ  t t t¡ƒd kst‚t t t¡t t¡ƒd ks4t‚t t t¡t t¡ƒdksRt‚t t t¡t t¡ƒdkspt‚t t t¡t t¡t t¡B ƒdks˜t‚t t t¡t t¡t 	t¡@ ƒdksÀt‚t t tt
 ¡ƒd ksÚt‚t t tt
 ¡t t¡t t
¡@ ƒdkst‚t t tt
 ¡t t¡t t
¡@ ƒd ks6t‚t t tt
 ¡t t¡t t
¡@ ƒdksdt‚t t dt ¡ƒd ks€t‚t t dt ¡t t¡ƒdks¤t‚t t dt ¡t t¡ƒdksÈt‚t t tt
 ¡t t¡ƒd ksìt‚t t ttƒ¡ƒd kst‚t t ttƒ¡t t¡ƒdks,t‚t t t¡t t¡ƒdksLt‚t t t¡t t¡ƒdkslt‚t t t¡t t¡ƒdksŒt‚t t t¡t t¡ƒd ks¬t‚t t t¡t t¡ƒdksÌt‚t t t¡t t
¡B t tt
 ¡ƒdksút‚d S )NFTr€   )r   r   rd   r   rH   rK   rO   rP   Únonnegativer¢   r   rc   r*   rI   rQ   rR   rY   rY   rY   rZ   Ú	test_zerou  s,    ((...$$$$     r¦   c                   C   s	  t t t¡ƒd kst‚t t t¡t t¡ƒdks4t‚t t t¡t t¡ƒd ksRt‚t t t¡t t¡ ƒdksrt‚t t t¡t t¡ƒd kst‚t t t¡t t¡ƒd ks®t‚t t t ¡t t¡ƒdksÎt‚t t dt ¡ƒd ksèt‚t t dt ¡t t¡ƒdkst‚t t dt ¡t t¡ƒdks0t‚t t dt ¡t t¡ƒdksTt‚t t dt ¡t t¡ ƒd kszt‚t t dt ¡t t¡ƒd ksžt‚t t td ¡t t¡ƒd ksÂt‚t t td ¡t 	t¡ƒd ksæt‚t t td ¡t 	t¡ƒdks
t‚t t td ¡t 	t¡ƒdks.t‚t t td ¡t t¡ƒdksRt‚t t dt ¡t t¡ƒdksvt‚t t dt ¡t 	t¡ƒdksšt‚t t dt ¡t t¡ƒdks¾t‚t t dt ¡t 	t¡ƒdksât‚t t tt
 ¡t t¡t t
¡@ ƒdkst‚t t tt
 ¡t t¡t 	t
¡@ ƒdks>t‚t t tt
 ¡t 	t¡t t
¡@ ƒdkslt‚t t tt
 ¡t t¡t t
¡@ ƒdksšt‚t t tt
 t ¡t t¡t t
¡@ t 	t¡@ ƒdksÖt‚t t tt
 t t ¡t t¡t t
¡@ t 	t¡@ t t¡@ ƒd ks t‚t t dt d ¡t t¡ƒdksHt‚t t dt t
 ¡t t¡t t
¡@ ƒdkszt‚t t dt t
 ¡t t¡t 	t
¡@ ƒdks¬t‚t t dt t
 ¡t t¡t t
¡@ ƒd ksÞt‚t t tt
 ¡t t¡t 	t
¡@ ƒdkst‚t t tt
 ¡t t¡t t
¡@ ƒdks:t‚t t dt t
 ¡t t¡t t¡@ ƒd kslt‚t t dt t
 ¡t t¡t t¡@ ƒd ksžt‚t t ttƒ¡t t¡ƒdksÂt‚t t dt ¡t t¡ƒdksæt‚t t td ¡t 	t¡ƒdks
t‚t t td ¡t t¡ƒdks.t‚t t dt ¡t 	t¡ƒd ksRt‚t t tt ¡t 	t¡t t¡@ t t¡ @ ƒd ksŒt‚t t tt ¡t t¡t t¡@ t t¡ @ ƒdksÆt‚t t tt ¡t 	t¡t t¡@ t t¡@ ƒdksþt‚t t tt ¡t t¡t t¡@ t t¡@ ƒdks6t‚t t tt ¡t 	t¡t t¡@ t t¡ @ ƒd kspt‚t t tt ¡t 	t¡t t¡@ t t¡@ ƒd ks¨t‚t t tt ¡t t¡t t¡@ t t¡ @ ƒd ksât‚t t tt ¡t t¡t t¡@ t t¡@ ƒd kst‚t t tt ¡t 	t¡ƒd ks>t‚t t tt ¡t t¡ƒd ksbt‚t t tt
 ¡t t¡t t
¡@ ƒd kst‚t t tt ¡t t¡ƒd ks´t‚t t ttt
  ¡t t¡t t
¡@ ƒdksæt‚t t ttt
  ¡t t¡t 	t
¡@ ƒd k	st‚d S )NTFr€   ry   rE   rf   )r   r   rR   r   rH   rI   rJ   rO   rM   rQ   r   r   r   r*   r   r   r	   rP   r
   rY   rY   rY   rZ   Útest_odd_query“  sv      $$$&$$$$$$$$$$....<&ÿÿ
(222..22$$$$$::88:8:8$$.$2r§   c                   C   s€   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdks>t‚t t tt tt  ¡t t¡t t¡@ t t¡@ ƒdks|t‚d S ©NF)r   r   rR   r   r   r   rI   rH   rY   rY   rY   rZ   Ú0test_oddness_in_ternary_integer_product_with_oddÝ  s    >r©   c                   C   sB   t t tt tt  ¡t t¡t t¡@ t t¡@ ƒd ks>t‚d S r’   )	r   r   rR   r   r   r   rI   rQ   rH   rY   rY   rY   rZ   Ú1test_oddness_in_ternary_integer_product_with_evenæ  s    rª   c                   C   sÂ  t t t¡t t¡ƒdkst‚t t t¡t t¡ ƒdks>t‚t t t¡t t¡ƒd ks\t‚t t t¡t t¡ ƒdks|t‚t t dt ¡t t¡ƒd ksžt‚t t tt ¡ƒd ks¸t‚t t tt ¡t t¡ƒd ksÚt‚t t tt ¡t t¡t t¡@ ƒd kst‚t t dt ¡t t¡ƒdks,t‚t t dt ¡ƒd ksHt‚t t td ¡t t¡ƒdkslt‚t t td ¡t t¡ƒdkst‚t t tt ¡t t¡t t¡@ ƒdks¾t‚d S )NTFr€   rz   )r   r   rT   r   rH   rI   r   rY   rY   rY   rZ   Ú
test_primeê  s      "".$$$r«   c                  C   sö  t t t¡t t¡ƒdkst‚t t t¡t t¡ƒdks<t‚t t t¡t t¡ƒd ksZt‚t t t ¡t t¡ƒdkszt‚t t t ¡t t¡ƒdksšt‚t t tt ¡t t¡t t¡@ ƒdksÆt‚t t tt ¡t t¡t t¡@ ƒdksòt‚t t tt ¡t t¡t t¡@ ƒd ks t‚t t tt ¡t t¡t 	t¡@ ƒdksNt‚t t dt ¡t t¡ƒdksrt‚t t¡t t¡@ t t
¡@ t t¡@ } t t tt t
 ¡ƒd ksºt‚t t tt t
 ¡| ƒdksÜt‚t t t t t
 ¡| ƒdks t‚t t tt ¡t t¡ƒd ks$t‚t t td ¡t t¡ƒdksHt‚t t td ¡t t¡ƒdkslt‚t t td ¡t t¡ƒdkst‚t t ddtd   ¡t t¡ƒdks¼t‚t t dt ¡ƒdksØt‚t t dt ¡ƒdksôt‚t t ttƒd ttƒd  d ¡ƒd ks$t‚t t t ttdƒd tdƒd    ¡ƒd ksZt‚t t ttƒ¡t t¡ƒdks~t‚t t ttƒ¡ t t¡ƒdks¤t‚t t tttƒ ¡t t¡ƒd ksÌt‚t t ttƒ¡t 	t¡ƒd ksðt‚t t tdt t dd¡t 	t¡ƒdks t‚t t ttt dd¡t 	t¡ƒdksLt‚t t ttt t ƒ¡t t¡ƒdksxt‚t t ttt t ƒ¡t t¡ƒdks¤t‚t t ttt t ƒ¡t t¡ƒd ksÐt‚t t ttƒ¡t 	t¡ƒdksôt‚t t ttƒ¡t t¡ƒdkst‚t t ttƒ¡t t¡ƒd ks<t‚t t ttd ƒ¡t t¡ƒdksdt‚t t ttƒ¡t t¡t t¡@ ƒsŽt‚t t ttƒ¡t t¡ƒd ks²t‚t t ttƒ¡ƒd ksÎt‚t t ttƒ¡t t¡ƒdksòt‚d S )NTFr€   ry   rE   r–   )r   r   rO   r   rH   rP   rc   r   r¥   rN   r   r   r   rK   r5   r7   r.   r#   rQ   rR   r/   r)   rI   r*   ©ÚassumptionsrY   rY   rZ   Útest_positiveü  sP      ,,..$( "$$$$$,06$&($0,,,,$$$(*$r®   c                   C   s°   t t d¡ƒst‚t t d¡ƒs$t‚t t d¡ƒdks:t‚t t t¡ t t¡ƒsVt‚t t t¡t t¡ƒdkstt‚t t tdƒ¡ƒdksŽt‚t t t¡t t¡ƒdks¬t‚d S )Nrf   r   rE   F)r   r   r¢   rH   rO   r   r0   rN   rY   rY   rY   rZ   Útest_nonpositive7  s    r¯   c                   C   s°   t t d¡ƒdkst‚t t d¡ƒs(t‚t t d¡ƒs:t‚t t t¡ t t¡ƒsVt‚t t t¡t t¡ƒdkstt‚t t tdƒ¡ƒdksŽt‚t t t¡t t¡ƒdks¬t‚d S )Nrf   Fr   rE   )r   r   r¥   rH   rP   r   r0   rN   rY   rY   rY   rZ   Útest_nonnegativeA  s    r°   c                   C   s8  t t t¡ƒd kst‚t t t¡t t¡ƒdks4t‚t t t¡t t¡ƒdksRt‚t t t¡t t¡ƒdkspt‚t t t¡t t¡ƒdksŽt‚t t t¡t t¡ƒdks¬t‚t t t¡t 	t¡ƒdksÊt‚t t t¡t 
t¡ƒdksèt‚t t ttdƒ ¡t t¡ƒdkst‚t t ttdƒ ¡t t¡ƒdks8t‚t t td ¡t t¡ƒdks\t‚t t tt ¡t t¡ƒdks€t‚t t tt ¡t t¡ƒd ks¤t‚t t dt ¡t t¡ƒdksÈt‚t t tt ¡t t¡ƒdksìt‚t t tt ¡t t¡ƒdkst‚t t tt ¡t t¡ƒd ks4t‚d S )NTr€   éþÿÿÿFrE   )r   r   rK   r   rH   rc   rO   rP   rI   rQ   rT   r0   r   rL   rN   rY   rY   rY   rZ   Útest_real_basicJ  s"    (($$$$$$r²   c                   C   s¦  t t td ¡t t¡ƒdks"t‚t t ttƒ¡t t¡ƒdksDt‚t t tt ¡t t¡t t¡@ ƒdkspt‚t t tt ¡t t¡t t¡@ ƒd ksœt‚t t tt ¡t 	t¡t t¡@ ƒdksÈt‚t t tt ¡t 
t¡t 
t¡@ ƒd ksôt‚t t tt ¡t 
t¡t t¡@ ƒd ks"t‚t t tt ¡t t¡t 
t¡@ ƒd ksPt‚t t td ¡t 
t¡ƒdkstt‚t t tt ¡t t¡t t¡@ ƒdks¢t‚t t tt ¡t 	t¡t t¡@ ƒdksÐt‚t t tt ¡t t¡t t¡@ ƒd ksþt‚t t tt ¡t 
t¡t t¡@ ƒd ks,t‚t t tt ¡t 
t¡t t¡@ ƒdksZt‚t t tt ¡t 
t¡t t¡@ ƒdksˆt‚t t ttt  ¡t t¡t tt ¡@ t tt ¡@ t t¡@ t 	t¡@ ƒdksàt‚t t ttt  ¡t t¡t tt ¡@ t t¡@ t t¡@ ƒdks*t‚t t ttt  ¡t t¡t tt ¡@ ƒdks`t‚t t ttt  ¡t t¡t tt ¡@ t 	t¡@ ƒdks t‚t t ttt  ¡t t¡t tt ¡@ t t¡@ ƒdksàt‚t t t t ¡t 
t¡ƒdkst‚t t tt ¡t 
t¡ƒdks*t‚t t tt ¡t 
t¡ƒd ksNt‚t t tt ¡t 
t¡ƒd ksrt‚t t ttt ttƒ  ¡t t¡ƒdks¢t‚d S )Nr€   TFr   )r   r   rK   r   rH   r0   rP   r   rI   rO   rN   rJ   rR   rQ   r   r   r   r#   r/   rY   rY   rY   rZ   Útest_real_powa  s2    "",,,,..$......XJ6@@&$$$r³   c                  C   s  t t ttƒ¡ƒd kst‚t t ttƒ¡ƒd ks4t‚t t ttƒ¡t t¡ƒdksVt‚t t ttƒ¡t t¡ƒdksxt‚t t ttƒ¡ƒd ks’t‚t t ttƒ¡t t¡ƒdks´t‚t t tttƒ ¡t t¡ƒdksÚt‚t t tdt t	 dd¡ƒdkst‚t t ttt	 dd¡ƒdks&t‚t t ttt	 d dd¡ƒdksNt‚t t t
t	ƒ¡ƒdksjt‚t t t
dt	 ƒ¡ƒdksŠt‚t t t
t	d ƒ¡ƒdksªt‚t t t
tƒ¡t t¡ƒd ksÎt‚t t t
tƒ¡t t¡ƒdksòt‚t t t
ttƒƒ¡t t¡ƒd kst‚t t t
ttƒƒ¡t t¡ƒd ksBt‚ttdt t	 t ddtdd} t t | ¡t t¡ƒdks„t‚t t ttƒt ¡t t¡ƒdks¬t‚t t ttƒt ¡t t¡ƒd ksÔt‚t t ttƒ¡ƒdksðt‚t t ttƒ¡ƒdkst‚d S )NTr€   Fr–   rE   )r   r   rK   r7   r   rH   r5   r.   r#   r   r/   rL   rN   r%   rI   r,   r+   rž   rY   rY   rZ   Útest_real_functions}  s.    """&($(  $$((" ((r´   c               	   C   sB  t t tddt dgdt dtgdt dggƒ¡ƒdks<t‚t t tddt dgdt dtgdt dggƒ¡ƒdksxt‚tddd} t t tddt | gdt dtgdt dggƒ¡ƒd ksÀt‚t t td	ƒ¡ƒdksÚt‚t t td
dtdfdfƒ¡ƒdkst‚t t td
d| dfdfƒ¡ƒd ks*t‚tddt dgdt dt gdt dggƒ}tt dt dgdt ddt gddt t ggƒ}t t |¡ƒdks¢t‚t t |¡ƒdksºt‚t t |d ¡ƒdksÖt‚|d }| 	¡  t t |¡ƒdksþt‚tddt dg| dt gdt dggƒ}t t |¡ƒd ks>t‚d S )Nr€   rz   ry   rE   TFr   ©rL   )©é   é   r}   )r¸   é   r   ©r}   r   r\   r¶   r¸   r   rº   r±   )
r   r   rV   r>   r   rH   r'   r?   rW   Úsimplify)r   ÚAÚBÚCZ_ArY   rY   rZ   Útest_matrixŸ  s"    <<<((,4(r¿   c               	   C   sð  t t t¡ƒd kst‚t t t¡ƒdks,t‚t t dt ¡ƒdksFt‚t t td ¡ƒdks`t‚t t tdƒ¡ƒdkszt‚t t dtdƒ ¡ƒdks˜t‚t t tdƒd ¡ƒdks¶t‚t t ttdƒ ¡ƒdksÔt‚t t tdttdƒ  ƒ¡ƒdksút‚t t dttdƒtddƒ   ¡ƒdks(t‚t t dttdƒdt    ¡ƒdksTt‚t	t
ttttfD ]´} t t | dƒ¡ƒdks„t‚t t | ddd	¡ƒdks¤t‚t t | d
dd	¡ƒdksÄt‚t t | tƒ¡t t¡ƒd ksèt‚t t | tƒ¡t t¡t t¡@ ƒdksdt‚qdttfD ]¸}t t |dƒ¡ƒdksBt‚t t |ddd	¡ƒdksbt‚t t |ddd	¡ƒdks‚t‚t t |tƒ¡t t¡ƒd ks¦t‚t t |tƒ¡t t¡t td ¡@ ƒdks"t‚q"ttfD ]f}t t |dƒ¡ƒdkst‚t t |ddd	¡ƒdks$t‚t t |tƒ¡t t¡ƒdksät‚qät t tt
dƒƒ¡ƒdkslt‚t t ttttdƒ  ƒ¡ƒd ks”t‚t t d¡ƒdks¬t‚t t t¡t t¡ƒdksÌt‚t t t¡t t¡ƒdksìt‚d S )NTr€   ry   r   rE   é   é   Fr–   r   gÃõ(\Â@)r   r   ri   r   rH   r   r0   r    r#   r.   r7   r8   r3   r4   r5   rc   r/   r1   r6   r2   r   Ztranscendentalr˜   rY   rY   rZ   Útest_algebraic·  s@    &.,  $2  $6 ( ( rÂ   c                   C   s^   t t t¡ƒdkst‚t t t¡¡ t t t¡ƒdks<t‚t ¡  t t t¡ƒdksZt‚dS )z Test ask with global assumptionsNT)r   r   rI   r   rH   r   ÚaddÚclearrY   rY   rY   rZ   Útest_globalå  s
    rÅ   c                  C   s`   t t t¡ƒdkst‚tƒ } |  t t¡¡ t t t¡| ddksFt‚t t t¡ƒdks\t‚dS )z(Test ask with custom assumptions contextN)ÚcontextT)r   r   rI   r   rH   r   rÃ   )Zlocal_contextrY   rY   rZ   Útest_custom_contextî  s
    rÇ   c                   C   s€   t t t¡t t¡t t¡? ƒdks(t‚t t t¡tt t¡t t¡ƒƒdksRt‚t t t¡tt t¡t t¡ƒƒdks|t‚d S r¨   )	r   r   rP   r   rK   rO   rH   r9   r;   rY   rY   rY   rZ   Útest_functions_in_assumptions÷  s    (*rÈ   c                   C   s8   t t t¡t t¡@ t t¡t t¡? ddks4t‚d S )Nr¬   F)r   r   rP   r   rI   rK   rO   rH   rY   rY   rY   rZ   Útest_composite_aský  s
    ÿÿrÉ   c                   C   s&  t dƒdkst‚t dƒdks t‚t t t¡ t t¡ƒdks@t‚t t t¡ t t¡ƒd ks`t‚t t t¡t t¡@ t t¡ƒdksˆt‚t t t¡t t¡@ ƒd ks¨t‚t t t¡t t¡B t t¡ƒdksÐt‚t t t¡t t¡B ƒd ksðt‚t t t¡t t¡? t t¡ƒdkst‚t t	t t¡t t¡ddt t¡ƒdksJt‚t t	t t¡t t¡ddƒd ksrt‚t t
t t¡t t¡ƒt t¡ƒdksžt‚t t
t t¡t t¡ƒƒd ksÂt‚t t
t t¡t t¡ƒt t¡ƒd ksît‚t t t¡t t¡B t t¡t t¡B ƒdks"t‚d S )NTFr–   )r   rH   r   rP   r   rO   rK   rG   rI   r:   r9   rQ   rY   rY   rY   rZ   Útest_composite_proposition  s.      ( ( *  ÿÿÿ
(,$,rÊ   c                   C   sH   t t t¡t t¡ B ƒdks"t‚t t t¡t t¡ @ ƒdksDt‚d S rh   )r   r   rK   r   rH   rY   rY   rY   rZ   Útest_tautology  s    "rË   c                   C   s¦   t t t¡t t¡t t¡@ ƒdks(t‚t t t¡t t¡t t¡B ƒd ksPt‚t t t¡t t¡t t¡? ƒd ksxt‚t t t¡t t¡t t¡?  ƒdks¢t‚d S ru   )r   r   rK   r   r   rH   rO   rY   rY   rY   rZ   Útest_composite_assumptions  s    (((rÌ   c                  C   sB  t tdd„ ƒ G dd„ dtƒ} zttƒ  td| ƒ W 5 Q R X tƒ  tt t	¡ƒdksZt
‚W 5 Q R X tƒ   tt t	d ¡ƒdks†t
‚W 5 Q R X W 5 tƒ  td| ƒ W 5 Q R X t`X t td	d„ ƒ G d
d„ dtƒ}zT|ƒ t_tj t¡dd„ ƒ}tt t	¡ƒdks
t
‚tt t	d ¡ƒdks&t
‚W 5 t`X t tdd„ ƒ dS )z7test that you can add keys to the ask system at runtimec                   S   s   t t t¡ƒS r’   ©r   r   Úmy_keyr   rY   rY   rY   rZ   Ú<lambda>!  ó    z(test_key_extensibility.<locals>.<lambda>c                   @   s   e Zd Zedd„ ƒZdS )z,test_key_extensibility.<locals>.MyAskHandlerc                 S   s   dS ru   rY   ©Úexprr­   rY   rY   rZ   r(   %  s    z3test_key_extensibility.<locals>.MyAskHandler.SymbolN)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr(   rY   rY   rY   rZ   ÚMyAskHandler$  s   r×   rÎ   TrE   Nc                   S   s   t t t¡ƒS r’   rÍ   rY   rY   rY   rZ   rÏ   5  rÐ   c                   @   s   e Zd ZdS )z+test_key_extensibility.<locals>.MyPredicateN©rÓ   rÔ   rÕ   rY   rY   rY   rZ   ÚMyPredicate8  s   rÙ   c                 S   s   dS ru   rY   rÑ   rY   rY   rZ   Ú_<  s    z!test_key_extensibility.<locals>._c                   S   s   t t t¡ƒS r’   rÍ   rY   rY   rY   rZ   rÏ   C  rÐ   )rB   ÚAttributeErrorr   rC   r   r   rÎ   r   r   r   rH   r   Úregisterr(   )r×   rÙ   rÚ   rY   rY   rZ   Útest_key_extensibility  s,     (

 rÝ   c                  C   sL   ddl m}  G dd„ d| ƒ}tj |¡dd„ ƒ}tt |ƒ ¡ƒdksHt‚dS )	zBtest that new types can be added to the ask system at runtime
    r   )ÚBasicc                   @   s   e Zd ZdS )z'test_type_extensibility.<locals>.MyTypeNrØ   rY   rY   rY   rZ   ÚMyTypeK  s   rß   c                 S   s   dS ru   rY   rÑ   rY   rY   rZ   rÚ   N  s    z"test_type_extensibility.<locals>._TN)Z
sympy.corerÞ   r   rT   rÜ   r   rH   )rÞ   rß   rÚ   rY   rY   rZ   Útest_type_extensibilityF  s
    

rà   c                  C   sr   t ttjtjƒttjtjƒttjtjƒƒ} tjtjtjtjh}t| ƒ}t||ƒ}|tj tjtjtjhksnt	‚d S r’   )
r<   r:   r   rI   rJ   rK   rL   r=   r   rH   )Úknown_factsÚknown_facts_keysZknown_facts_cnfÚmappingrY   rY   rZ   Útest_single_fact_lookupU  s    þ
rä   c               
   C   sÔ   t tt t¡t t¡ƒtt t¡t t¡ƒtt t¡t t¡ƒƒ} t t¡t t¡t t¡t t¡h}t|| ƒtjtjht	ƒ ftjtjtjtjtjht	ƒ ftjtjtjtjht	ƒ ftjtjtjht	ƒ fiksÐt
‚d S r’   )r<   r:   r   rI   r   rJ   rK   rL   r   ÚsetrH   )rá   râ   rY   rY   rZ   Útest_generate_known_facts_dicta  s    þ$   ýÿræ   c               	      sŠ   t dƒ‰ tˆ ƒ} t | ¡}tƒ }|jD ]$}| tdd„ t|t	dD ƒƒ¡ q&t
ƒ |ksZt‚‡ fdd„tƒ D ƒ}t|| ƒ}tƒ |ks†t‚dS )z)"Test that ask_generated.py is up-to-dater   c                 s   s   | ]}t |jj|jƒV  qd S r’   )r   ÚargÚfunctionZis_Not)Ú.0ZlitrY   rY   rZ   Ú	<genexpr>w  s     z.test_known_facts_consistent.<locals>.<genexpr>)Úkeyc                    s   g | ]}|ˆ ƒ‘qS rY   rY   )ré   Úpred©r   rY   rZ   Ú
<listcomp>z  s     z/test_known_facts_consistent.<locals>.<listcomp>N)r(   r   r   Zto_CNFrå   ÚclausesrÃ   Ú	frozensetÚsortedÚstrr   rH   r   r   r   )ZfactZcnfrï   ÚclÚkeysrã   rY   rí   rZ   Útest_known_facts_consistentn  s    

"
rõ   c                   C   sª   t t dtdƒd tdƒd   ¡ƒdks.t‚t t ttdƒtdƒdd¡ƒdksVt‚t t ttdƒtdƒdd¡ƒdks~t‚t t 	ttdƒtdƒdd¡ƒdks¦t‚d S )Nl   Ò
>V3&¥Z
 rE   r€   Tr   r–   F)
r   r   rT   r5   r7   rH   rQ   r   r$   rI   rY   rY   rY   rZ   Útest_Add_queries  s    .((rö   c                	   C   s4   t t td ¡ƒ tt t¡ƒr&t‚W 5 Q R X d S )NrE   )r   r   rO   r   r   rH   rY   rY   rY   rZ   Útest_positive_assuming†  s    r÷   c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t tttƒ tjƒS r’   )r   r#   r/   r   r   rK   rY   rY   rY   rZ   rÏ   Œ  rÐ   z!test_issue_5421.<locals>.<lambda>©rB   Ú	TypeErrorrY   rY   rY   rZ   Útest_issue_5421‹  s    rú   c                   C   s   t tdd„ ƒ d S )Nc                   S   s
   t tjƒS r’   )r   r   rO   rY   rY   rY   rZ   rÏ     rÐ   z!test_issue_3906.<locals>.<lambda>rø   rY   rY   rY   rZ   Útest_issue_3906  s    rû   c                   C   sR   t t ttƒd ¡t t¡ƒd ks&t‚t t ttƒd ¡ t t¡ƒdksNt‚d S )Nr€   T)r   r   rO   r/   r   rH   rP   rY   rY   rY   rZ   Útest_issue_5833“  s    &rü   c                   C   s    t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s    t t t¡t t¡t t¡@ ƒS r’   )r   r   rO   r   rP   rY   rY   rY   rZ   rÏ   ™  rÐ   z!test_issue_6732.<locals>.<lambda>c                   S   s    t t t¡t t¡t t¡@ ƒS r’   )r   r   rP   r   rO   rY   rY   rY   rZ   rÏ   š  rÐ   )rB   Ú
ValueErrorrY   rY   rY   rZ   Útest_issue_6732˜  s    rþ   c                   C   sx  t t ttƒ¡t t¡ƒdks"t‚t t ttƒ¡t t¡ƒdksDt‚t t ttƒ¡t t¡ƒdksft‚t t ttƒ¡ƒd ks€t‚t t t	tƒ¡t t¡ƒd ks¢t‚t t t	tƒ¡t t¡ƒd ksÄt‚t t t	t
ddƒƒ¡ƒdksät‚t t t	tƒ¡t t¡t td ¡@ ƒdkst‚t t t	tƒ¡t t¡t td ¡@ ƒdksHt‚t t ttƒ¡t t¡ƒd kslt‚t t tt
ddƒƒ¡ƒdksŽt‚t t ttƒ¡t td ¡t td ¡@ ƒdksÄt‚t t ttƒ¡t td ¡ƒd ksìt‚t t ttƒ¡t t¡ƒdkst‚t t ttƒ¡t t¡ƒdks4t‚t t ttƒ¡t t¡ƒdksXt‚t t ttƒ¡ƒd kstt‚d S )NTFrE   r   )r   r   rO   r4   r
   rH   rP   rd   r   r3   r    r¢   r¥   r1   r2   rK   rN   rY   rY   rY   rZ   Útest_issue_7246  s"    """"" 22$"6($$$rÿ   c                   C   s&   t t ttƒ¡t t¡ƒdks"t‚d S ru   )r   r   rO   r1   r   rd   rH   rY   rY   rY   rZ   Útest_issue_7246_failing´  s    r   c                  C   sî  t ddd} tt | ¡ƒdks"t‚tt | ¡ƒdks8t‚tt | ¡ƒdksNt‚t ddd} tt | ¡ƒdkspt‚tt | ¡ƒdks†t‚tt | ¡ƒdksœt‚t ddd} tt | ¡ƒd ks¾t‚tt | ¡ƒdksÔt‚t ddd} tt | ¡ƒdksöt‚tt | ¡ƒdkst‚tt | ¡ƒdks&t‚t ddd} tt 	| ¡ƒdksJt‚t ddd	} tt | ¡ƒdksnt‚tt | ¡ƒdks†t‚t ddd
} tt | ¡ƒdksªt‚tt | ¡ƒd ksÂt‚tt 
| ¡ƒd ksÚt‚t ddd} tt | ¡ƒdksþt‚t ddd} tt | ¡ƒdks"t‚tt | ¡ƒdks:t‚t ddd} tt | ¡ƒdks^t‚tt | ¡ƒdksvt‚t ddd} tt | ¡ƒdksšt‚tt | ¡ƒdks²t‚t ddd} tt | ¡ƒdksÖt‚tt | ¡ƒdksît‚t ddd} tt | ¡ƒdkst‚tt 
| ¡ƒdks*t‚t ddd} tt 
| ¡ƒdksNt‚t ddd} tt | ¡ƒdksrt‚t ddd} tt | ¡ƒdks–t‚tt | ¡ƒdks®t‚t ddd} tt | ¡ƒdksÒt‚tt | ¡ƒdksêt‚d S )Nr   T)rK   F)rN   rµ   )rO   )rG   )rP   )r¥   )rS   )rT   )rU   )rQ   )rR   )rc   )rd   ©rI   )rJ   )rM   )r'   r   r   rK   rH   rN   rL   rO   rP   rG   rd   rS   rT   rU   rQ   rR   rc   rI   rJ   rM   rí   rY   rY   rZ   Útest_check_old_assumption»  sf    r  c                   C   sr   t t d¡ƒdkst‚t t d¡ƒdks,t‚t t d¡ƒdksBt‚t t d¡ƒdksXt‚t t d¡ƒdksnt‚d S )Nr`   Fg      @g      @g       @)r   r   rI   rH   rT   rU   rQ   rR   rY   rY   rY   rZ   Útest_issue_9636	  s
    r  c                   C   sp   t t dt ¡ƒd kst‚t t dt  ¡ƒd ks6t‚t t dt ¡ƒd ksPt‚t t dt  ¡ƒd kslt‚d S ©Nr   )r   r   rN   r   rH   rK   rY   rY   rY   rZ   Útest_autosimp_used_to_fail		  s    r  c               	      s&  ddl m‰  G ‡ fdd„dtƒ} z|tƒ  td| ƒ W 5 Q R X tddd}tƒ  tt d	¡ƒsdt	‚W 5 Q R X tƒ   tt |¡t |¡ƒst	‚W 5 Q R X W 5 t`X G d
d„ dt
ƒ}zf|ƒ t_tj t¡dd„ ƒ}tj t¡‡ fdd„ƒ}tt d	¡ƒsüt	‚tt |¡t |¡ƒst	‚W 5 t`X d S )Nr   ©Ú	conjunctsc                       s(   e Zd Zedd„ ƒZe‡ fdd„ƒZdS )z/test_custom_AskHandler.<locals>.MersenneHandlerc                 S   s    t t t| d dƒ¡ƒrdS d S ©NrE   r€   T©r   r   rI   r/   rÑ   rY   rY   rZ   r   	  s    z7test_custom_AskHandler.<locals>.MersenneHandler.Integerc                    s   | ˆ |ƒkrdS d S ru   rY   rÑ   r  rY   rZ   r(   	  s    z6test_custom_AskHandler.<locals>.MersenneHandler.SymbolN)rÓ   rÔ   rÕ   rÖ   r   r(   rY   r  rY   rZ   ÚMersenneHandler	  s   
r
  Úmersenner   Tr  r   c                   @   s   e Zd ZdS )z1test_custom_AskHandler.<locals>.MersennePredicateNrØ   rY   rY   rY   rZ   ÚMersennePredicate*	  s   r  c                 S   s    t t t| d dƒ¡ƒrdS d S r  r	  rÑ   rY   rY   rZ   rÚ   .	  s    z!test_custom_AskHandler.<locals>._c                    s   | ˆ |ƒkrdS d S ru   rY   rÑ   r  rY   rZ   rÚ   2	  s    )Úsympy.logic.boolalgr  r   r   r  rC   r   r(   r   rH   r   rÜ   r   )r
  r   r  rÚ   rY   r  rZ   Útest_custom_AskHandler	  s*    	(


 r  c                  C   s€   G dd„ dt ƒ} zd| ƒ t_tj tt¡dd„ ƒ}tj ttt¡dd„ ƒ}tt dd¡ƒs\t‚tt dd	d
¡ƒsrt‚W 5 t`X d S )Nc                   @   s   e Zd ZdS )z.test_polyadic_predicate.<locals>.SexyPredicateNrØ   rY   rY   rY   rZ   ÚSexyPredicate>	  s   r  c                    s:   t | |gƒ}t‡ fdd„|D ƒƒs&dS |d |d  dkS )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r’   ©r   r   rT   ©ré   rŠ   r¬   rY   rZ   rê   F	  s     ú5test_polyadic_predicate.<locals>._.<locals>.<genexpr>FrE   r   é   ©rñ   Úall)Úint1Úint2r­   r‰   rY   r¬   rZ   rÚ   C	  s    z"test_polyadic_predicate.<locals>._c                    sP   t | ||gƒ}t‡ fdd„|D ƒƒs(dS |d |d  dkoN|d |d  dkS )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r’   r  r  r¬   rY   rZ   rê   M	  s     r  Fr€   rE   r  r   r  )r  r  Zint3r­   r‰   rY   r¬   rZ   rÚ   J	  s    r{   r\   r   é   é   )r   r   Z	sexyprimerÜ   r   r   rH   )r  rÚ   rY   rY   rZ   Útest_polyadic_predicate<	  s    

r  c                  C   sN   t dƒjd kst‚G dd„ dt ƒ} | tdƒƒ}| tdƒƒ}|j|jksJt‚d S )NZmypredicatec                   @   s   e Zd ZdS )z5test_Predicate_handler_is_unique.<locals>.MyPredicateNrØ   rY   rY   rY   rZ   rÙ   ]	  s   rÙ   Úmp1Úmp2)r   ÚhandlerrH   r&   )rÙ   r  r  rY   rY   rZ   Ú test_Predicate_handler_is_uniqueW	  s
    r  c                   C   st   t t td¡t t¡ƒst‚t t td¡t t¡ƒr8t‚t t td¡t t¡ƒrTt‚t t td¡t t¡ƒspt‚d S r  )r   r   rŸ   r   rd   rH   rc   ÚnerY   rY   rY   rZ   Útest_relationald	  s    r   )ŸZ	sympy.abcr   r   r   r   r   r   r   r	   r
   r   Zsympy.assumptionsr   r   r   r   r   Zsympy.assumptions.assumer   r   r   Zsympy.assumptions.cnfr   r   Zsympy.assumptions.factsr   r   r   r   Zsympy.assumptions.handlersr   Zsympy.assumptions.ask_generatedr   r   Zsympy.core.addr   Zsympy.core.numbersr   r   r    r!   r"   r#   Zsympy.core.singletonr$   Zsympy.core.powerr%   Zsympy.core.symbolr&   r'   r(   Z(sympy.functions.combinatorial.factorialsr)   Z$sympy.functions.elementary.complexesr*   r+   r,   r-   Z&sympy.functions.elementary.exponentialr.   r/   Z(sympy.functions.elementary.miscellaneousr0   Z(sympy.functions.elementary.trigonometricr1   r2   r3   r4   r5   r6   r7   r8   r  r9   r:   r;   r<   r=   Zsympy.matricesr>   r?   Zsympy.testing.pytestr@   rA   rB   rC   rD   ra   r[   r]   r_   rb   re   rg   ro   rs   rt   rx   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  r  r  r  r  r   rY   rY   rY   rZ   Ú<module>   sÒ   0 ()0aj   v

KF

?i
O*J

:
	
!
-		(

F+