o
    *Î®c  ã                   @   sÜ   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 d dlmZ d dlmZ dZdZ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#d$„ Z!d%d&„ Z"dS )'é    )Ú	fuzzy_notÚLogicÚAndÚOrÚNotÚ	fuzzy_andÚfuzzy_orÚ_fuzzy_groupÚ_torfÚ
fuzzy_nandÚ	fuzzy_xor)Úraises)ÚproductTFNc                  C   s^   t ttg} t| gd Ž D ] }t|ƒtdd„ |D ƒƒrdntdd„ |D ƒƒr'dnd u s,J ‚qd S )Né   c                 s   ó    | ]}|V  qd S ©N© ©Ú.0Újr   r   úB/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_logic.pyÚ	<genexpr>   ó   € ztest_torf.<locals>.<genexpr>Tc                 s   s    | ]}|d u V  qdS )FNr   r   r   r   r   r      s   € F)ÚTÚFÚUr   r
   Úall)ÚvÚir   r   r   Ú	test_torf   s   

ÿÿr   c                  C   sà   t ttg} t| gd Ž D ]?}t|ƒd |v rd ntdd„ |D ƒƒr"dndu s'J ‚t|dd| d¡dkr5d nd |v r;d ntdd„ |D ƒƒrFdndu sKJ ‚qd	d„ td
ƒD ƒ}t|ƒd u s]J ‚dd„ td
ƒD ƒ}t|ƒd u snJ ‚d S )Nr   c                 s   r   r   r   r   r   r   r   r      r   z#test_fuzzy_group.<locals>.<genexpr>TF)Ú
quick_exité   c                 s   r   r   r   r   r   r   r   r      r   c                 s   ó     | ]}|d kr
dndV  qdS )r   TNr   ©r   r   r   r   r   r      ó   € é   c                 s   r"   )r!   TNr   r#   r   r   r   r      r$   )	r   r   r   r   r	   r   ÚcountÚranger
   )r   r   Úitr   r   r   Útest_fuzzy_group   s   
ÿ
$
þr)   c                   C   s4   t tƒtksJ ‚t tƒtksJ ‚t tƒtksJ ‚d S r   )r   r   r   r   r   r   r   r   Útest_fuzzy_not"   s   r*   c                   C   sÒ   t ttgƒtks
J ‚t ttgƒtksJ ‚t ttgƒtksJ ‚t ttgƒtks(J ‚t ttgƒtks2J ‚t ttgƒtks<J ‚dd„ tttfD ƒtttgksMJ ‚t tttgƒtksXJ ‚t g ƒtks`J ‚ttdd„ ƒ d S )Nc                 S   ó   g | ]}t |gƒ‘qS r   ©r   ©r   Úwr   r   r   Ú
<listcomp>/   ó    z"test_fuzzy_and.<locals>.<listcomp>c                   S   ó   t ƒ S r   r,   r   r   r   r   Ú<lambda>2   ó    z test_fuzzy_and.<locals>.<lambda>)r   r   r   r   r   Ú	TypeErrorr   r   r   r   Útest_fuzzy_and(   ó   "r5   c                   C   sÒ   t ttgƒtks
J ‚t ttgƒtksJ ‚t ttgƒtksJ ‚t ttgƒtks(J ‚t ttgƒtks2J ‚t ttgƒtks<J ‚dd„ tttfD ƒtttgksMJ ‚t tttgƒtksXJ ‚t g ƒtks`J ‚ttdd„ ƒ d S )Nc                 S   r+   r   ©r   r-   r   r   r   r/   <   r0   z!test_fuzzy_or.<locals>.<listcomp>c                   S   r1   r   r7   r   r   r   r   r2   ?   r3   ztest_fuzzy_or.<locals>.<lambda>)r   r   r   r   r   r4   r   r   r   r   Útest_fuzzy_or5   r6   r8   c                  C   sè   t dtdƒƒ} t dtdƒƒ}t| ƒt|ƒksJ ‚| |ktks J ‚| |ktks(J ‚t dddƒt dddƒks6J ‚t dddƒt dddƒksDJ ‚t dddƒt dddƒksRJ ‚tdƒtdƒk s\J ‚tdƒtdƒk du shJ ‚tdƒdk du srJ ‚d S )NÚaÚbÚcFr%   )r   r   Úhashr   r   )Úl1Úl2r   r   r   Útest_logic_cmpB   s   r?   c                   C   s€   t ƒ du sJ ‚tƒ du sJ ‚t tƒtksJ ‚t tƒtksJ ‚ttƒtks&J ‚ttƒtks.J ‚t dƒdks6J ‚tdƒdks>J ‚d S )NTFr9   )r   r   r   r   r   r   r   r   Útest_logic_oneargS   s   r@   c                   C   s0   t dtdƒƒtksJ ‚tdtdƒƒtksJ ‚d S ©Nr9   )r   r   r   r   r   r   r   r   r   Útest_logic_xnotx`   s   rB   c                   C   sÜ   t ttƒtks	J ‚t ttƒtksJ ‚t ttƒtksJ ‚t ttƒtks$J ‚tttƒtks-J ‚tttƒtks6J ‚tttƒtks?J ‚tttƒtksHJ ‚t dtƒdksQJ ‚t dtƒtksZJ ‚tdtƒtkscJ ‚tdtƒdkslJ ‚d S rA   )r   r   r   r   r   r   r   r   Útest_logic_eval_TFe   s   rC   c                	   C   sÔ   t dddƒt ddƒksJ ‚tdddƒtddƒksJ ‚t t ddƒt ddƒƒt ddddƒks.J ‚ttddƒtddƒƒtddddƒksBJ ‚tdt dddƒt ddƒt dddƒdt ddƒƒtdt dddƒt ddƒƒkshJ ‚d S )	Nr9   r:   r;   ÚdÚtÚnÚpÚr)r   r   r   r   r   r   Útest_logic_combine_argsv   s   (("ÿÿrI   c                  C   s¨   t tddƒdƒ} |  ¡ tt ddƒt ddƒƒksJ ‚t tdtdƒƒdƒ} |  ¡ t ddƒks.J ‚t tddƒtddƒƒ} |  ¡ tt ddƒt ddƒt ddƒt ddƒƒksRJ ‚d S )Nr9   r:   r;   rD   )r   r   Úexpandr   )rE   r   r   r   Útest_logic_expand   s   "$ÿrK   c                      sˆ  t j‰ ˆ dƒdksJ ‚ˆ dƒtdƒksJ ‚ˆ dƒtddƒks J ‚ˆ dƒtddƒks+J ‚ˆ dƒttddƒdƒks9J ‚ˆ dƒttddƒdƒksGJ ‚ˆ d	ƒtdddƒksSJ ‚ˆ d
ƒtdddƒks_J ‚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„ƒ 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„ƒ d S )Nr9   ú!aza & br:   za | bz	a | b & cr;   z	a & b | cz	a & b & cz	a | b | cc                      ó   ˆ dƒS )Nz| ar   r   ©ÚSr   r   r2   ™   ó    z'test_logic_fromstring.<locals>.<lambda>c                      rM   )Nz& ar   r   rN   r   r   r2   š   rP   c                      rM   )Nza | | br   r   rN   r   r   r2   ›   rP   c                      rM   )Nza | & br   r   rN   r   r   r2   œ   rP   c                      rM   )Nza & & br   r   rN   r   r   r2      rP   c                      rM   )Nza |r   r   rN   r   r   r2   ž   rP   c                      rM   ©Nza|br   r   rN   r   r   r2   Ÿ   rP   c                      rM   )Nú!r   r   rN   r   r   r2       rP   c                      rM   ©Nz! ar   r   rN   r   r   r2   ¡   rP   c                      rM   )Nz!(a + 1)r   r   rN   r   r   r2   ¢   rP   c                      rM   )NÚ r   r   rN   r   r   r2   £   rP   )r   Ú
fromstringr   r   r   r   Ú
ValueErrorr   r   rN   r   Útest_logic_fromstring   s(   rW   c                   C   sš   t dƒdksJ ‚t dƒdksJ ‚t dƒdksJ ‚t dƒdks J ‚t tddƒƒtt dƒt dƒƒks2J ‚t tddƒƒtt dƒt dƒƒksDJ ‚ttdd„ ƒ d S )Nr9   rL   TFr:   c                   S   s   t dƒS )Nr!   )r   r   r   r   r   r2   ±   rP   z test_logic_not.<locals>.<lambda>)r   r   r   r   rV   r   r   r   r   Útest_logic_not¦   s   $$rX   c                      s@   t j‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nc                      rM   )Nza&br   r   rN   r   r   r2   ¶   rP   z!test_formatting.<locals>.<lambda>c                      rM   rQ   r   r   rN   r   r   r2   ·   rP   c                      rM   rS   r   r   rN   r   r   r2   ¸   rP   )r   rU   r   rV   r   r   rN   r   Útest_formatting´   s   rY   c                   C   st   t dƒd u sJ ‚t dƒd u sJ ‚t dƒd u sJ ‚t dƒdu s J ‚t dƒdu s(J ‚t dƒdu s0J ‚t d	ƒdu s8J ‚d S )
Nr   )NT)NF)TFT)TTF)TTF)TTFT)r   r   r   r   r   Útest_fuzzy_xor»   s   rZ   c                  C   s&   dD ]} t | ƒtt| ƒƒksJ ‚qd S )N))r!   r   )r!   r!   )r   r   )r   r   r   )Úargsr   r   r   Útest_fuzzy_nandÄ   s   ÿr\   )#Úsympy.core.logicr   r   r   r   r   r   r   r	   r
   r   r   Úsympy.testing.pytestr   Ú	itertoolsr   r   r   r   r   r)   r*   r5   r8   r?   r@   rB   rC   rI   rK   rW   rX   rY   rZ   r\   r   r   r   r   Ú<module>   s,   4 	