Ë
    gKêj°·  ã                   óæ  — d Z ddl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 ddlmZmZmZmZmZ  G d„ dej,                  «      Z G d„ d	ej,                  «      Z G d
„ dej,                  «      Z G d„ dej,                  «      Z G d„ dej,                  «      Z G d„ dej,                  «      Z G d„ dej,                  «      Z G d„ dej,                  «      Z G d„ dej,                  «      Zy)z
Boolean Algebra.

Tests

Copyright (c) Sebastian Kraemer, basti.kr@gmail.com and others
SPDX-License-Identifier: BSD-2-Clause
é    N)ÚexpectedFailure)Ú	TOKEN_ANDÚTOKEN_FALSEÚ
TOKEN_LPARÚ	TOKEN_NOTÚTOKEN_ORÚ
TOKEN_RPARÚTOKEN_SYMBOLÚ
TOKEN_TRUEÚBooleanAlgebraÚ
ParseErrorÚSymbol)ÚPARSE_INVALID_EXPRESSIONÚPARSE_INVALID_NESTINGÚPARSE_INVALID_OPERATOR_SEQUENCEÚPARSE_INVALID_SYMBOL_SEQUENCEÚPARSE_UNKNOWN_TOKENc                   ó~   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚBooleanAlgebraTestCasec                 ó^   — t        «       }d}|j                  |«      }t        |«      |k(  sJ ‚y )Nz(a|b|c)&d&(~e|(f&g)))r   ÚparseÚstr)ÚselfÚalgebraÚexpr_strÚexprs       úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/boolean/test_boolean.pyÚtest_creationz$BooleanAlgebraTestCase.test_creation$   s/   € Ü Ó"ˆØ)ˆØ�}‰}˜XÓ&ˆÜ�4‹y˜HÒ$Ð$Ñ$ó    c                 ó´  —  G d„ dt         «      }d}t        |¬«      }|j                  |«      }|j                  |j	                  |j                  d«      |j                  |j                  d«      «      |j                  d«      «      |j                  d«      |j	                  |j                  |j                  d	«      «      |j	                  |j                  |j                  d
«      |j                  d«      «      |j                  |j                  «      «      |j                  d«      «      }|j                  «       |j                  «       k(  sJ ‚||k(  sJ ‚y )Nc                   ó   — e Zd Zy)úeBooleanAlgebraTestCase.test_parse_with_mixed_operators_multilines_and_custom_symbol.<locals>.MySymbolN©Ú__name__Ú
__module__Ú__qualname__© r   r   ÚMySymbolr"   +   ó   „ Ør   r(   zl(a or ~ b +_c  ) and
                      d & ( ! e_
                      | (my * g OR 1 or 0) ) AND that ©ÚSymbol_classÚaÚbÚ_cÚdÚe_ÚmyÚgÚthat)	r   r   r   ÚANDÚORÚNOTÚTRUEÚFALSEÚpretty)r   r(   r   r   r   Úexpecteds         r   Ú<test_parse_with_mixed_operators_multilines_and_custom_symbolzSBooleanAlgebraTestCase.test_parse_with_mixed_operators_multilines_and_custom_symbol*   s  € ô	”vô 	ð:ˆô !¨hÔ7ˆØ�}‰}˜XÓ&ˆà—;‘;Ø�J‰JØ—‘˜sÓ#Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜tÓ$óð
 �N‰N˜3ÓØ�J‰JØ—‘˜GŸN™N¨4Ó0Ó1Ø—
‘
Ø—K‘KØŸ™ tÓ,ØŸ™ sÓ+óð —L‘LØ—M‘Móó
ð �N‰N˜6Ó"ó%
ˆð* �{‰{‹} §¡Ó 1Ò1Ð1Ð1Ø�xÒÐÑr   c           
      ó  — d}t        «       }|j                  |«      }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  «      }||k(  sJ ‚y )Nz8True or False or None or 0 or 1 or TRue or FalSE or NONe)r   r   r5   r7   r8   )r   r   r   r   r:   s        r   Ú7test_parse_recognizes_trueish_and_falsish_symbol_tokenszNBooleanAlgebraTestCase.test_parse_recognizes_trueish_and_falsish_symbol_tokensM   ss   € ØMˆÜ Ó"ˆØ�}‰}˜XÓ&ˆØ—:‘:Ø�L‰LØ�M‰MØ�M‰MØ�M‰MØ�L‰LØ�L‰LØ�M‰MØ�M‰Mó	
ˆð �xÒÐÑr   c                 ó†  ‡‡—  G d„ dt         «      Š G ˆˆfd„dt        «      Šd} ‰«       }|j                  |«      }|j                  |j	                  |j                  d«      |j                  d«      «      |j                  |j                  |j                  d«      |j                  d	«      «      «      «      }||k(  sJ ‚y )
Nc                   ó   — e Zd Zy)úcBooleanAlgebraTestCase.test_parse_can_use_iterable_from_alternative_tokenizer.<locals>.CustomSymbolNr#   r'   r   r   ÚCustomSymbolr@   ^   r)   r   rA   c                   ó.   •‡ — e Zd ZW °fˆˆ fd„	Zd„ Zˆ xZS )údBooleanAlgebraTestCase.test_parse_can_use_iterable_from_alternative_tokenizer.<locals>.CustomAlgebrac                 ó&   •— t         ‰| �  |¬«       y )Nr*   )ÚsuperÚ__init__)r   r+   ÚCustomAlgebraÚ	__class__s     €€r   rF   zmBooleanAlgebraTestCase.test_parse_can_use_iterable_from_alternative_tokenizer.<locals>.CustomAlgebra.__init__b   s   ø€ Ü�m TÑ3ÀÐ3ÕNr   c              3   óB  K  — t         t        t        t        t        dœ}t        |j                  d«      «      D ]b  \  }}t        |j                  «       «      D ]A  \  }}||v r||   |||ff–— Œ|dk(  r| j                  |«      |||ff–— Œ5t        |||ff–— ŒC Œd y­w)z3Sample tokenizer using custom operators and symbols)ÚWHY_NOTÚALSOÚNEITHERú(ú)FÚCustomN)
r   r   r   r   r	   Ú	enumerateÚ
splitlinesÚsplitr   r
   )r   ÚsÚopsÚrowÚlineÚcolÚtoks          r   ÚtokenizezmBooleanAlgebraTestCase.test_parse_can_use_iterable_from_alternative_tokenizer.<locals>.CustomAlgebra.tokenizee   s±   è ø€ ô  (Ü%Ü(Ü#Ü#ñ�ô "+¨1¯<©<¸Ó+>Ó!?ò @‘I�C˜Ü$-¨d¯j©j«lÓ$;ò @™˜˜SØ #™:Ø"% c¡(¨C°#°s°Ð";Ó;Ø  Hš_Ø"&§+¡+¨cÓ"2°C¸#¸s¸Ð"CÓCä".°°c¸3°ZÐ"?Ó?ñ@ñ@ùs   ‚BB)r$   r%   r&   rF   rY   Ú__classcell__)rH   rG   rA   s   @€€r   rG   rC   a   s   ù„ Ù,8ö Oö@r   rG   zo( Custom WHY_NOT regular ) ALSO NEITHER  (
                      not_custom ALSO standard )
                   rO   ÚregularÚ
not_customÚstandard)r   r   r   r4   r5   r6   )r   r   r   r   r:   rG   rA   s        @@r   Ú6test_parse_can_use_iterable_from_alternative_tokenizerzMBooleanAlgebraTestCase.test_parse_can_use_iterable_from_alternative_tokenizer]   s¯   ù€ ô	œ6ô 	÷	@œNô 	@ð.ˆñ  “/ˆØ�}‰}˜XÓ&ˆØ—;‘;Ø�J‰JØ—‘˜xÓ(Ø—‘˜yÓ)óð �K‰KØ—‘Ø—N‘N <Ó0Ø—N‘N :Ó.óóó
ˆð �xÒÐÑr   c                 óx  ‡‡‡‡	— dd l Š	ddlmŠ  G d„ dt        «      Š G d„ dt        «      Š G ˆˆˆˆ	fd„dt        «      }d	} |«       }|j                  |«      }|j                  |j                   ‰d
«       ‰d«      «      |j                   ‰d«      |j                   ‰d«      «      «      «      }||k(  sJ ‚y )Nr   )ÚStringIOc                   ó   — e Zd ZdZy)úSBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.PlainVarzPlain boolean variableN©r$   r%   r&   Ú__doc__r'   r   r   ÚPlainVarrb   �   s   „ Ú$r   re   c                   ó   — e Zd ZdZy)úVBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.ColonDotVarz/Colon and dot-separated string boolean variableNrc   r'   r   r   ÚColonDotVarrg   “   s   „ Ú=r   rh   c                   ó   •— e Zd Zˆ ˆˆˆfd„Zy)úZBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.AdvancedAlgebrac              3   ó>  •‡K  — t        |t        «      st        dt        |«      z  «      ‚t        t        t
        t
        t        t        t        t        t        t        t        t        t        dœ}‰j                  ‰j                  ‰j                  ‰j                  ‰j                  ‰j                   f}d„ ‰j#                   ‰|«      j$                  «      D «       }dŠˆˆˆfd„}d\  }}}|D ]¬  \  }	}
}}|	|v r ||«      }|�||||ff–— d\  }}}Œ&|j'                  |
j)                  «       «      }|�# ||«      }|�||||ff–— d\  }}}||
||ff–— Œj|	‰j*                  k(  s|	‰j,                  k(  r|
‰v r|s|}|}||
z  }Œ˜t        d	t/        «       z  «      ‚ y­w)
a"  
                Example custom tokenizer derived from the standard Python tokenizer
                with a few extra features: #-style comments are supported and a
                colon- and dot-separated string is recognized and stored in custom
                symbols. In contrast with the standard tokenizer, only these
                boolean operators are recognized : & | ! and or not.

                For more advanced tokenization you could also consider forking the
                `tokenize` standard library module.
                z!expr must be string but it is %s.)ú&Úandú|Úorú!ÚnotrM   rN   ÚtrueÚ1ÚfalseÚ0Únonec              3   ó^   K  — | ]%  \  }}\  }}}}|r|j                  «       r||||f–— Œ' y ­w©N)Ústrip)Ú.0ÚtoktyperX   rU   rW   Ú_s         r   ú	<genexpr>zvBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.AdvancedAlgebra.tokenize.<locals>.<genexpr>Â   sG   è ø€ ò ñ˜ ñ 'ØØØ˜!Ù˜sŸy™yœ{ð  ØØØô	ñùs   ‚+-)ú:ú.c                 ó\   •‡ — ‰ r(t        ˆ fd„‰D «       «      r
 ‰‰ «      }|S  ‰‰ «      }|S y )Nc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrx   r'   )rz   rS   Úcurrent_dotteds     €r   r}   zŒBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.AdvancedAlgebra.tokenize.<locals>.build_symbol.<locals>.<genexpr>×   s   øè ø€ ÒF°q˜q NÔ2ÑFùs   ƒ)Úany)r‚   ÚsymÚ	COLON_DOTrh   re   s   ` €€€r   Úbuild_symbolzyBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.AdvancedAlgebra.tokenize.<locals>.build_symbolÕ   s;   ù€ Ù%ÜÓF¸IÔFÔFÙ"-¨nÓ"=˜Cð  #˜
ñ #+¨>Ó":˜CØ"˜
ð &r   )Ú NNN)r‡   r   r   z8Unknown token: %(tok)r at line: %(row)r, column: %(col)r)Ú
isinstancer   Ú	TypeErrorÚtyper   r   r   r   r	   r   r   ÚNLÚNEWLINEÚCOMMENTÚINDENTÚDEDENTÚ	ENDMARKERÚgenerate_tokensÚreadlineÚgetÚlowerÚNAMEÚOPÚlocals)r   r   ÚTOKENSÚignored_token_typesÚtokensr†   ÚdottedÚsrowÚscolr{   rX   rU   rW   ÚsymbolÚ	std_tokenr…   rh   re   r`   rY   s                  @€€€€r   rY   zcBooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_example.<locals>.AdvancedAlgebra.tokenize—   sÎ  ùè ø€ ô " $¬Ô,Ü#Ð$GÌ$ÈtË*Ñ$TÓUÐUô
 #Ü$Ü!Ü"Ü"Ü$Ü#Ü#Ü&Ü#Ü(Ü$Ü'ñ�ð" —K‘KØ×$Ñ$Ø×$Ñ$Ø—O‘OØ—O‘OØ×&Ñ&ð'Ð#ñð  (×7Ñ7¹À»×8OÑ8OÓPô�ð�	ö
#ð &4Ñ"�˜˜dà.4ò Ñ*�G˜S # sØÐ"5Ñ5á!-¨fÓ!5˜Ø!Ð-Ø"(¨&°4¸°,Ð">Ò>Ø1?Ñ.˜F D¨$à à &§
¡
¨3¯9©9«;Ó 7�IØ Ð,á!-¨fÓ!5˜Ø!Ð-Ø"(¨&°4¸°,Ð">Ò>Ø19Ñ.˜F D¨$à'¨¨s°C¨jÐ8Ò8à à (§-¡-Ò/°G¸x¿{¹{Ò4JÈsÐV_ÑO_Ù%Ø#&˜DØ#&˜DØ #™™ô (ØVÔY_ÓYaÑaóð ñ;ùs   „FFN)r$   r%   r&   rY   )rh   re   r`   rY   s   €€€€r   ÚAdvancedAlgebrarj   –   s   ø„ ÷hð hr   r    z‰
            (colon1:dot1.dot2 or colon2_name:col_on3:do_t1.do_t2.do_t3 )
            and
            ( plain_symbol & !Custom )
        zcolon1:dot1.dot2z%colon2_name:col_on3:do_t1.do_t2.do_t3Úplain_symbolrO   )	rY   Úior`   r   r   r   r4   r5   r6   )
r   r    Ú	test_exprr   r   r:   rh   re   r`   rY   s
         @@@@r   Ú*test_parse_with_advanced_tokenizer_examplezABooleanAlgebraTestCase.test_parse_with_advanced_tokenizer_exampleŒ   s´   û€ ÛÝô	%”vô 	%ô	>œ&ô 	>÷i	ñ i	œnô i	ðVˆ	ñ "Ó#ˆØ�}‰}˜YÓ'ˆØ—;‘;Ø�J‰JÙÐ.Ó/ÙÐCÓDóð �K‰K™ Ó0°'·+±+¹hÀxÓ>PÓ2QÓRó
ˆð �xÒÐÑr   c                 ó°   — t        d¬«      }d}|j                  |«      }|j                  |j                  d«      |j                  d«      «      }||k(  sJ ‚y )N)r   r|   ú-ú+)Úallowed_in_tokenzl-a AND b+czl-azb+c)r   r   r4   r   )r   r   r£   r   r:   s        r   Ú-test_allowing_additional_characters_in_tokenszDBooleanAlgebraTestCase.test_allowing_additional_characters_in_tokens  sP   € Ü Ð2FÔGˆØ!ˆ	à�}‰}˜YÓ'ˆØ—;‘;˜wŸ~™~¨eÓ4°g·n±nÀUÓ6KÓLˆØ�xÒÐÑr   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nzl-a AND noneú,Exception should be raised when parsing '%s'©r   r   Úfailr   Ú
error_coder   ©r   r   r   Úpes       r   Útest_parse_raise_ParseError1z3BooleanAlgebraTestCase.test_parse_raise_ParseError1  sU   € Ü Ó"ˆØˆð	8Ø�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	8Ø—=‘=Ô$7Ò7Ð7Õ7ûð	8úó   Ž%4 ´	A½AÁAc                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nz(l-a + AND l-br«   r¬   r¯   s       r   Útest_parse_raise_ParseError2z3BooleanAlgebraTestCase.test_parse_raise_ParseError2$  sU   € Ü Ó"ˆØˆð	8Ø�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	8Ø—=‘=Ô$7Ò7Ð7Õ7ûð	8úr²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nz(l-a + AND l-b)r«   r¬   r¯   s       r   Útest_parse_raise_ParseError3z3BooleanAlgebraTestCase.test_parse_raise_ParseError3-  óU   € Ü Ó"ˆØ ˆð	8Ø�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	8Ø—=‘=Ô$7Ò7Ð7Õ7ûð	8úr²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nz(l-a AND l-br«   r¬   r¯   s       r   Útest_parse_raise_ParseError4z3BooleanAlgebraTestCase.test_parse_raise_ParseError46  sU   € Ü Ó"ˆØˆð	8Ø�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	8Ø—=‘=Ô$7Ò7Ð7Õ7ûð	8úr²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nz(l-a + AND l-b))r«   r¬   r¯   s       r   Útest_parse_raise_ParseError5z3BooleanAlgebraTestCase.test_parse_raise_ParseError5?  sU   € Ü Ó"ˆØ!ˆð	8Ø�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	8Ø—=‘=Ô$7Ò7Ð7Õ7ûð	8úr²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nz(l-a  AND l-b))r«   r¬   r¯   s       r   Útest_parse_raise_ParseError6z3BooleanAlgebraTestCase.test_parse_raise_ParseError6H  r·   r²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nzl-a ANDr«   r¬   r¯   s       r   Útest_parse_raise_ParseError7z3BooleanAlgebraTestCase.test_parse_raise_ParseError7Q  sU   € Ü Ó"ˆØˆð	8Ø�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	8Ø—=‘=Ô$7Ò7Ð7Õ7ûð	8úr²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)NzOR l-ar«   ©r   r   r­   r   r®   r   r¯   s       r   Útest_parse_raise_ParseError8z3BooleanAlgebraTestCase.test_parse_raise_ParseError8Z  sX   € Ü Ó"ˆØˆð	DØ�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	DØ—=‘=Ô$CÒCÐCÕCûð	Dúr²   c                 ó¾   — t        «       }d}	 |j                  |«       | j                  d|z  «       y # t        $ r}|j                  t
        k(  sJ ‚Y d }~y d }~ww xY w)Nz+ l-ar«   rÁ   r¯   s       r   Útest_parse_raise_ParseError9z3BooleanAlgebraTestCase.test_parse_raise_ParseError9c  sX   € Ü Ó"ˆØˆð	DØ�M‰M˜$ÔØ�I‰IÐDÀtÑKÕLøÜò 	DØ—=‘=Ô$CÒCÐCÕCûð	Dúr²   c                 ó–   — t        «       }d}	 |j                  |«       y # t        $ r}|j                  t        k(  sJ ‚Y d }~y d }~ww xY w)Nza or b c©r   r   r   r®   r   ©r   r   r   r°   s       r   Ú>test_parse_side_by_side_symbols_should_raise_exception_but_notzUBooleanAlgebraTestCase.test_parse_side_by_side_symbols_should_raise_exception_but_notl  sF   € Ü Ó"ˆØˆð	BØ�M‰M˜(Õ#øÜò 	BØ—=‘=Ô$AÒAÐAÕAûð	Búó   Ž   	A©AÁAc                 ó–   — t        «       }d}	 |j                  |«       y # t        $ r}|j                  t        k(  sJ ‚Y d }~y d }~ww xY w)Nz
(a or b) c)r   r   r   r®   r   rÇ   s       r   Ú?test_parse_side_by_side_symbols_should_raise_exception_but_not2zVBooleanAlgebraTestCase.test_parse_side_by_side_symbols_should_raise_exception_but_not2t  sC   € Ü Ó"ˆØˆð	=Ø�M‰M˜(Õ#øÜò 	=Ø—=‘=Ô$<Ò<Ð<Õ<ûð	=úrÉ   c                 ó–   — t        «       }d}	 |j                  |«       y # t        $ r}|j                  t        k(  sJ ‚Y d }~y d }~ww xY w)Nza brÆ   rÇ   s       r   Ú/test_parse_side_by_side_symbols_raise_exceptionzFBooleanAlgebraTestCase.test_parse_side_by_side_symbols_raise_exception|  sF   € Ü Ó"ˆØˆð	BØ�M‰M˜(Õ#øÜò 	BØ—=‘=Ô$AÒAÐAÕAûð	BúrÉ   c                 ó–   — t        «       }d}	 |j                  |«       y # t        $ r}|j                  t        k(  sJ ‚Y d }~y d }~ww xY w)Nz(a) (b))r   r   r   r®   r   rÇ   s       r   Ú;test_parse_side_by_side_symbols_with_parens_raise_exceptionzRBooleanAlgebraTestCase.test_parse_side_by_side_symbols_with_parens_raise_exception„  sC   € Ü Ó"ˆØˆð	:Ø�M‰M˜(Õ#øÜò 	:Ø—=‘=Ô$9Ò9Ð9Õ9ûð	:úrÉ   N)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   #   si   „ ò%ò! òF ò - ò^D òL ò8ò8ò8ò8ò8ò8ò8òDòDòBò=òBó:r   r   c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚBaseElementTestCasec                 ó  — ddl m} t        «       }|j                  |j                  k(  sJ ‚ |«        | j	                  t
        |d«       | j	                  t
        |d«       |j                  |j                  u sJ ‚|j                  |j                  usJ ‚|j                  |j                  u sJ ‚t        |j                  «      du sJ ‚t        |j                  «      du sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Nr   )ÚBaseElementé   r,   TF)Úboolean.booleanrÓ   r   r7   ÚassertRaisesr‰   r8   Úbool)r   rÓ   r   s      r   r   z!BaseElementTestCase.test_creationŽ  sà   € Ý/ä Ó"ˆØ�|‰|˜wŸ|™|Ò+Ð+Ð+ÙŒØ×Ñœ) [°!Ô4Ø×Ñœ) [°#Ô6Ø�|‰|˜wŸ|™|Ñ+Ð+Ð+Ø�|‰| 7§=¡=Ñ0Ð0Ð0Ø�}‰} §¡Ñ-Ð-Ð-Ü�G—L‘LÓ! TÑ)Ð)Ð)Ü�G—M‘MÓ" eÑ+Ð+Ð+Ø�|‰|˜tÒ#Ð#Ð#Ø�}‰} Ò%Ð%Ñ%r   c                 ó¤   — t        «       }|j                  j                  t        «       k(  sJ ‚|j                  j                  t        «       k(  sJ ‚y rx   )r   r7   ÚliteralsÚsetr8   ©r   r   s     r   Útest_literalsz!BaseElementTestCase.test_literalsž  s>   € Ü Ó"ˆØ�|‰|×$Ñ$¬«Ò-Ð-Ð-Ø�}‰}×%Ñ%¬«Ò.Ð.Ñ.r   c                 ó¼   — t        «       }|j                  j                  «       |j                  k(  sJ ‚|j                  j                  «       |j                  k(  sJ ‚y rx   )r   r7   Ú
literalizer8   rÛ   s     r   Útest_literalizez#BaseElementTestCase.test_literalize£  sH   € Ü Ó"ˆØ�|‰|×&Ñ&Ó(¨G¯L©LÒ8Ð8Ð8Ø�}‰}×'Ñ'Ó)¨W¯]©]Ò:Ð:Ñ:r   c                 ó¼   — t        «       }|j                  j                  «       |j                  k(  sJ ‚|j                  j                  «       |j                  k(  sJ ‚y rx   ©r   r7   Úsimplifyr8   rÛ   s     r   Útest_simplifyz!BaseElementTestCase.test_simplify¨  sH   € Ü Ó"ˆØ�|‰|×$Ñ$Ó&¨'¯,©,Ò6Ð6Ð6Ø�}‰}×%Ñ%Ó'¨7¯=©=Ò8Ð8Ñ8r   c                 óÐ   — t        «       }t        «       }|j                  j                  «       |j                  k(  sJ ‚|j                  j                  «       |j                  k(  sJ ‚y rx   rá   )r   Úalgebra1Úalgebra2s      r   Útest_simplify_two_algebraz-BaseElementTestCase.test_simplify_two_algebra­  sP   € Ü!Ó#ˆÜ!Ó#ˆØ�}‰}×%Ñ%Ó'¨8¯=©=Ò8Ð8Ð8Ø�~‰~×&Ñ&Ó(¨H¯N©NÒ:Ð:Ñ:r   c                 ó¬   — t        «       }|j                  j                  |j                  k(  sJ ‚|j                  j                  |j                  k(  sJ ‚y rx   )r   r7   Údualr8   rÛ   s     r   Ú	test_dualzBaseElementTestCase.test_dual³  sB   € Ü Ó"ˆØ�|‰|× Ñ  G§M¡MÒ1Ð1Ð1Ø�}‰}×!Ñ! W§\¡\Ò1Ð1Ñ1r   c                 óº   — t        «       }|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |j                  k7  sJ ‚y rx   )r   r7   r8   rÛ   s     r   Útest_equalityz!BaseElementTestCase.test_equality¸  sL   € Ü Ó"ˆØ�|‰|˜wŸ|™|Ò+Ð+Ð+Ø�}‰} §¡Ò-Ð-Ð-Ø�|‰|˜wŸ}™}Ò,Ð,Ñ,r   c                 ó„   — t        «       }|j                  |j                  k  sJ ‚|j                  |j                  kD  sJ ‚y rx   )r   r8   r7   rÛ   s     r   Ú
test_orderzBaseElementTestCase.test_order¾  s6   € Ü Ó"ˆØ�}‰}˜wŸ|™|Ò+Ð+Ð+Ø�|‰|˜gŸm™mÒ+Ð+Ñ+r   c                 óè   — t        «       }t        |j                  «      dk(  sJ ‚t        |j                  «      dk(  sJ ‚t	        |j                  «      dk(  sJ ‚t	        |j                  «      dk(  sJ ‚y )Nrs   ru   r7   r8   )r   r   r7   r8   ÚreprrÛ   s     r   Útest_printingz!BaseElementTestCase.test_printingÃ  sf   € Ü Ó"ˆÜ�7—<‘<Ó  CÒ'Ð'Ð'Ü�7—=‘=Ó! SÒ(Ð(Ð(Ü�G—L‘LÓ! VÒ+Ð+Ð+Ü�G—M‘MÓ" gÒ-Ð-Ñ-r   N)r$   r%   r&   r   rÜ   rß   rã   rç   rê   rì   rî   rñ   r'   r   r   rÑ   rÑ   �  s/   „ ò&ò /ò
;ò
9ò
;ò2ò
-ò,ó
.r   rÑ   c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚSymbolTestCasec                 ó”   — t        d«       t        d«       t        d «       t        t        «       t        d«       t        ddg«       y )Né   r,   )rõ   rÔ   é   rÔ   )r   Úsum©r   s    r   Ú	test_initzSymbolTestCase.test_initÌ  s1   € ÜˆqŒ	ÜˆsŒÜˆtŒÜŒsŒÜˆyÔÜ��1ˆv�r   c                 ó6   — t        d«      j                  du sJ ‚y )Nrõ   T)r   Ú	isliteralrø   s    r   Útest_isliteralzSymbolTestCase.test_isliteralÔ  s   € Ü�a‹y×"Ñ" dÑ*Ð*Ñ*r   c                 óê   — t        d«      }t        d«      }||j                  v sJ ‚||j                  v sJ ‚||j                  v sJ ‚||j                  v sJ ‚| j                  t        t        |dd«       y )Nrõ   rÙ   )r   rÙ   rÖ   ÚAttributeErrorÚsetattr)r   Úl1Úl2s      r   rÜ   zSymbolTestCase.test_literals×  sr   € Ü�A‹YˆÜ�A‹YˆØ�R—[‘[Ñ Ð Ð Ø�R—[‘[Ñ Ð Ð Ø�R—[‘[Ñ Ð Ð Ø�R—[‘[Ñ Ð Ð Ø×Ñœ.¬'°2°zÀ1ÕEr   c                 óD   — t        d«      }|j                  «       |k(  sJ ‚y ©Nrõ   )r   rÞ   ©r   rS   s     r   rß   zSymbolTestCase.test_literalizeà  s   € Ü�1‹IˆØ�|‰|‹~ Ò"Ð"Ñ"r   c                 óD   — t        d«      }|j                  «       |k(  sJ ‚y r  ©r   râ   r  s     r   rã   zSymbolTestCase.test_simplifyä  s   € Ü�1‹IˆØ�z‰z‹|˜qÒ Ð Ñ r   c                 óv   — t        d«      }t        d«      }|j                  «       |j                  «       k(  sJ ‚y r  r  )r   Ús1Ús2s      r   Ú!test_simplify_different_instancesz0SymbolTestCase.test_simplify_different_instancesè  s.   € Ü�A‹YˆÜ�A‹YˆØ�{‰{‹} §¡£Ò-Ð-Ñ-r   c                 ó\  — t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }||k(  sJ ‚||k(  sJ ‚||k(  rJ ‚||k(  rJ ‚||k(  sJ ‚||k(  rJ ‚||k(  rJ ‚||k7  rJ ‚||k7  rJ ‚||k7  sJ ‚||k7  sJ ‚y )Nr,   r-   r/   Úe©r   r   )r   r   r,   Úa2Úcr/   r  s          r   Útest_equal_symbolsz!SymbolTestCase.test_equal_symbolsí  sÑ   € Ü Ó"ˆØ�N‰N˜3ÓˆØ�^‰^˜CÓ ˆà�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3Óˆð �AŠvˆˆvØ�BŠwˆˆwØ˜’6ÐˆzØ˜’7Ðˆ{Ø�AŠvˆˆvØ˜’6ÐˆzØ˜’6Ðˆzà˜’6ÐˆzØ˜’7Ðˆ{Ø�AŠvˆˆvØ�QŠwˆ‰wr   c                 ó¨   — t         } |d«       |d«      k  sJ ‚ |d«       |d«      kD  sJ ‚ |d«       |d«      k  sJ ‚ |d«       |d«      kD  sJ ‚y )NÚxÚyrõ   rÔ   )r   )r   ÚSs     r   rî   zSymbolTestCase.test_order  sW   € ÜˆÙ�‹v™˜#›ŠÐˆÙ�‹v™˜#›ŠÐˆÙ�‹t‘a˜“dŠ{Ðˆ{Ù�‹t‘a˜“dŠ{Ð‰{r   c                 óÌ   — t        t        d«      «      dk(  sJ ‚t        t        d«      «      dk(  sJ ‚t        t        d«      «      dk(  sJ ‚t        t        d«      «      dk(  sJ ‚y )Nr,   rõ   rs   zSymbol('a')z	Symbol(1))r   r   rð   rø   s    r   rñ   zSymbolTestCase.test_printing  s\   € Ü”6˜#“;Ó 3Ò&Ð&Ð&Ü”6˜!“9‹~ Ò$Ð$Ð$Ü”F˜3“KÓ  MÒ1Ð1Ð1Ü”F˜1“I‹ +Ò-Ð-Ñ-r   N)r$   r%   r&   rù   rü   rÜ   rß   rã   r
  r  rî   rñ   r'   r   r   ró   ró   Ë  s0   „ òò+òFò#ò!ò.ò
ò.ó.r   ró   c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚNOTTestCasec                 ó¼  — t        «       }| j                  t        |j                  «       | j                  t        |j                  dd«       |j                  |j	                  d«      «       |j                  |j
                  «      j                  «       |j                  k(  sJ ‚|j                  |j                  «      j                  «       |j
                  k(  sJ ‚y )Nr,   r-   )r   rÖ   r‰   r6   r   r7   râ   r8   rÛ   s     r   rù   zNOTTestCase.test_init  s›   € Ü Ó"ˆØ×Ñœ) W§[¡[Ô1Ø×Ñœ) W§[¡[°#°sÔ;Ø�‰�G—N‘N 3Ó'Ô(Ø—‘˜GŸL™LÓ)×3Ñ3Ó5¸¿¹ÒFÐFÐFØ—‘˜GŸM™MÓ*×4Ñ4Ó6¸'¿,¹,ÒFÐFÑFr   c                 ó®   — t        «       }|j                  d«      }|j                  |«      j                  sJ ‚|j	                  d«      j                  rJ ‚y )Nrõ   ú~(a|b))r   r   r6   rû   r   )r   r   rS   s      r   rü   zNOTTestCase.test_isliteral  sJ   € Ü Ó"ˆØ�N‰N˜1ÓˆØ�{‰{˜1‹~×'Ò'Ð'Ð'Ø—=‘= Ó*×4Ò4Ð4Ð4Ð4r   c                 ó„  — t        «       }|j                  d«      }| }|j                  sJ ‚||j                  v sJ ‚t	        |j                  «      dk(  sJ ‚|j                  d«      }|j                  rJ ‚||j                  v sJ ‚t	        |j                  «      dk(  sJ ‚|j                  dd¬«      }|j                  sJ ‚y )Nr,   rõ   ú~(a&a)T©râ   )r   r   rû   rÙ   Úlenr   )r   r   r,   Úls       r   rÜ   zNOTTestCase.test_literals!  s¯   € Ü Ó"ˆØ�N‰N˜3ÓˆØˆBˆØ�{Š{Ðˆ{Ø�A—J‘J‰ÐˆÜ�1—:‘:‹ !Ò#Ð#Ð#à�M‰M˜(Ó#ˆØ—;’;ÐˆØ�A—J‘J‰ÐˆÜ�1—:‘:‹ !Ò#Ð#Ð#à�M‰M˜(¨TˆMÓ2ˆØ�{Š{Ð‰{r   c                 óò   — t        «       j                  } |d«       |d«      j                  «       k(  sJ ‚ |d«       |d«      j                  «       k(  sJ ‚ |d«       |d«      j                  «       k(  sJ ‚y )Nú~az~a|~bú~(a&b)z~a&~br  ©r   r   rÞ   ©r   r   s     r   rß   zNOTTestCase.test_literalize1  sm   € ÜÓ ×&Ñ&ˆÙ�T‹{™e D›k×4Ñ4Ó6Ò6Ð6Ð6Ù�W‹~¡ x£×!;Ñ!;Ó!=Ò=Ð=Ð=Ù�W‹~¡ x£×!;Ñ!;Ó!=Ò=Ð=Ñ=r   c                 ó*  — t        «       }|j                  d«      }| | k(  sJ ‚|j                  d«      |j                  d«      k(  sJ ‚|j                  d«      |k7  sJ ‚|  j                  «       |k(  sJ ‚|   j                  «       | k(  sJ ‚|    j                  «       |k(  sJ ‚||z  |z   j                  «       ||z  |z   j                  «       k(  sJ ‚|j                  dd¬«      |k(  sJ ‚t        «       }|j                  dd¬«      |k(  sJ ‚y )Nr,   ú~~aTr  )r   r   r   râ   )r   r   r,   ræ   s       r   rã   zNOTTestCase.test_simplify7  s%  € Ü Ó"ˆØ�N‰N˜3ÓˆØˆr�a�RŠxˆˆxØ�~‰~˜cÓ" g§n¡n°SÓ&9Ò9Ð9Ð9Ø�}‰}˜UÓ# qÒ(Ð(Ð(Ø���~‰~Ó 1Ò$Ð$Ð$Ø�"���‰Ó  Q BÒ&Ð&Ð&Ø�2�#��×ÑÓ! QÒ&Ð&Ð&Ø�a‘%˜!‘)�×&Ñ&Ó(¨q°1©u°q©y¨\×,CÑ,CÓ,EÒEÐEÐEØ�}‰}˜U¨Tˆ}Ó2°aÒ7Ð7Ð7Ü!Ó#ˆØ�~‰~˜e¨dˆ~Ó3°qÒ8Ð8Ñ8r   c                 óB  — t        «       }|j                  d«      }| j                  «       | k(  sJ ‚|j                  d«      j                  «       |k(  sJ ‚|j                  d«      j                  «       | k(  sJ ‚|j                  d«      j                  «       |k(  sJ ‚y )Nr,   r&  z~~~az~~~~a)r   r   Úcancelr   )r   r   r,   s      r   Útest_cancelzNOTTestCase.test_cancelE  s’   € Ü Ó"ˆØ�N‰N˜3ÓˆØ��{‰{‹}  Ò"Ð"Ð"Ø�}‰}˜UÓ#×*Ñ*Ó,°Ò1Ð1Ð1Ø�}‰}˜VÓ$×+Ñ+Ó-°!°Ò3Ð3Ð3Ø�}‰}˜WÓ%×,Ñ,Ó.°!Ò3Ð3Ñ3r   c                 óf  — t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      j                  «       | | z  k(  sJ ‚|j                  d«      j                  «       |j                  d«      k(  sJ ‚|j                  d«      j                  «       || z  k(  sJ ‚||z  |z    j                  «       ||z  |z  k(  sJ ‚||z  |z     j                  «       ||z   | z  k(  sJ ‚|j                  d«      j                  «       ||z  |z  k(  sJ ‚|j                  d	«      j                  «       ||z  |z   j                  «       k(  sJ ‚|j                  }|j
                  }| j                  «       |k(  sJ ‚| j                  «       |k(  sJ ‚y )
Nr,   r-   r  r"  z~(a|b|c)ú~a&~b&~cz~(~a&b)z~~~~~~~~~~(a&b|c)z~~~~~~~~~~~(a&b|c))r   r   r   Údemorganr8   r7   )r   r   r,   r-   r  Ú_0Ú_1s          r   Útest_demorganzNOTTestCase.test_demorganM  s¨  € Ü Ó"ˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�}‰}˜XÓ&×/Ñ/Ó1°a°R¸1¸"±WÒ<Ð<Ð<Ø�}‰}˜ZÓ(×1Ñ1Ó3°w·}±}ÀZÓ7PÒPÐPÐPØ�}‰}˜YÓ'×0Ñ0Ó2°a¸1¸"±fÒ<Ð<Ð<Ø�q‘5˜1‘9��×'Ñ'Ó)¨Q°©U°Q©YÒ6Ð6Ð6Ø˜‘E˜A‘I�,��×(Ñ(Ó*°°A±¨h¸!¸©mÒ;Ð;Ð;Ø�}‰}Ð1Ó2×;Ñ;Ó=ÀÀQÁÈÁÒJÐJÐJØ�}‰}Ð1Ó2×;Ñ;Ó=ÀAÈÁEÈAÁIÀ,×AXÑAXÓAZÒZÐZÐZØ�]‰]ˆØ�\‰\ˆØ�×ÑÓ! RÒ'Ð'Ð'Ø�×ÑÓ! RÒ'Ð'Ñ'r   c                 óœ   — t        «       }|j                  d«      }|j                  d«      }|| k  sJ ‚| |kD  sJ ‚| |k  sJ ‚|| kD  sJ ‚y )Nrõ   rÔ   r  )r   r   r  r  s       r   rî   zNOTTestCase.test_order^  sZ   € Ü Ó"ˆØ�N‰N˜1ÓˆØ�N‰N˜1ÓˆØ�A�2ŠvˆˆvØˆr�AŠvˆˆvØˆr�AŠvˆˆvØ�A�2Švˆ‰vr   c                 óä   — t        «       }|j                  d«      }t        | «      dk(  sJ ‚t        | «      dk(  sJ ‚|j	                  d«      }t        |«      dk(  sJ ‚t        |«      sJ d«       ‚y )Nr,   r!  zNOT(Symbol('a'))r  z$NOT(AND(Symbol('a') == Symbol('a'))))r   r   r   rð   r   )r   r   r,   r   s       r   rñ   zNOTTestCase.test_printingg  sq   € Ü Ó"ˆØ�N‰N˜3ÓˆÜ�A�2‹w˜$ŠÐˆÜ�Q�B‹xÐ-Ò-Ð-Ð-Ø�}‰}˜XÓ&ˆÜ�4‹y˜HÒ$Ð$Ð$Ü�DŒzÐAÐAÓA‰zr   N)r$   r%   r&   rù   rü   rÜ   rß   rã   r)  r/  rî   rñ   r'   r   r   r  r    s1   „ òGò5òò >ò9ò4ò(ò"óBr   r  c                   ó°   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚDualBaseTestCaseNc                 óü   — ddl m} t        d«      t        d«      t        d«      }}} |||«      } ||||«      } |||«      } ||||«      }| j                  t        |«       ||||fD ]  }	t        |	|«      rŒJ ‚ y ©Nr   ©ÚDualBaser,   r-   r  )rÕ   r7  r   rÖ   r‰   rˆ   ©
r   r7  r,   r-   r  Út1Út2Út3Út4Úterms
             r   rù   zDualBaseTestCase.test_initu  sˆ   € Ý,ä˜“+œv c›{¬F°3«Kˆaˆ1ˆÙ�a˜‹^ˆÙ�a˜˜AÓˆÙ�a˜‹^ˆÙ�a˜˜AÓˆà×Ñœ) XÔ.Ø˜˜R Ð$ò 	.ˆDÜ˜d HÕ-Ð-Ð-ñ	.r   c                 ó°   — ddl m} t        d«      t        d«      t        d«      }}} |||«      } ||||«      }|j                  rJ ‚|j                  rJ ‚y r5  )rÕ   r7  r   rû   )r   r7  r,   r-   r  r9  r:  s          r   rü   zDualBaseTestCase.test_isliteral‚  sS   € Ý,ä˜“+œv c›{¬F°3«Kˆaˆ1ˆÙ�a˜‹^ˆÙ�a˜˜AÓˆà—<’<ÐÐØ—<’<ÐÐ�<r   c                 ó:  — ddl m} t        d«      t        d«      t        d«      }}} |||«      } ||||«      } |||«      } ||||«      }||||fD ]  }	||	j                  v rŒJ ‚ |||fD ]  }	||	j                  v rŒJ ‚ ||fD ]  }	||	j                  v rŒJ ‚ y r5  )rÕ   r7  r   rÙ   r8  s
             r   rÜ   zDualBaseTestCase.test_literalsŒ  sÆ   € Ý,ä˜“+œv c›{¬F°3«Kˆaˆ1ˆÙ�a˜‹^ˆÙ�a˜˜AÓˆÙ�a˜‹^ˆÙ�a˜˜AÓˆà˜˜R Ð$ò 	&ˆDØ˜Ÿ™Ò%Ð%Ð%ð	&à˜˜R�Lò 	&ˆDØ˜Ÿ™Ò%Ð%Ð%ð	&à˜�Hò 	&ˆDØ˜Ÿ™Ò%Ð%Ð%ñ	&r   c                 ón   — t        «       j                  } |d«      j                  «        |d«      k(  sJ ‚y )Nza|~(b|c)z	a|(~b&~c)r#  r$  s     r   rß   z DualBaseTestCase.test_literalizeœ  s1   € ÜÓ ×&Ñ&ˆÙ�ZÓ ×+Ñ+Ó-±°{Ó1CÒCÐCÑCr   c                 óÀ   — t        «       }|j                  d«      j                  |j                  k(  sJ ‚|j                  d«      j                  |j                  k(  sJ ‚y )Núa&aúa|a)r   r   Úannihilatorr8   r7   rÛ   s     r   Útest_annihilatorz!DualBaseTestCase.test_annihilator   sL   € Ü Ó"ˆØ�}‰}˜UÓ#×/Ñ/°7·=±=Ò@Ð@Ð@Ø�}‰}˜UÓ#×/Ñ/°7·<±<Ò?Ð?Ñ?r   c                 óÀ   — t        «       }|j                  d«      j                  |j                  k(  sJ ‚|j                  d«      j                  |j                  k(  sJ ‚y )Núa|búa&b)r   r   Úidentityr8   r7   rÛ   s     r   Útest_identityzDualBaseTestCase.test_identity¥  sL   € Ü Ó"ˆØ�}‰}˜UÓ#×,Ñ,°·±Ò=Ð=Ð=Ø�}‰}˜UÓ#×,Ñ,°·±Ò<Ð<Ñ<r   c                 óä  — t        «       }|j                  |j                  d«      |j                  d«      «      j                  |j                  k(  sJ ‚|j	                  |j                  d«      |j                  d«      «      j                  |j                  k(  sJ ‚|j                  d«      j                  |j                  k(  sJ ‚|j                  d«      j                  |j                  k(  sJ ‚y )Nr,   r-   rG  rH  )r   r4   r   ré   r5   r   rÛ   s     r   rê   zDualBaseTestCase.test_dualª  s¶   € Ü Ó"ˆØ�{‰{˜7Ÿ>™>¨#Ó.°·±¸sÓ0CÓD×IÑIÈWÏZÉZÒWÐWÐWØ�z‰z˜'Ÿ.™.¨Ó-¨w¯~©~¸cÓ/BÓC×HÑHÈGÏKÉKÒWÐWÐWà�}‰}˜UÓ#×(Ñ(¨G¯K©KÒ7Ð7Ð7Ø�}‰}˜UÓ#×(Ñ(¨G¯J©JÒ6Ð6Ñ6r   c                 ó   — t        «       }t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  }|j                  }||z  j	                  «       |k(  sJ ‚|||z  z  j	                  «       ||z  k(  sJ ‚||z  j	                  «       |k(  sJ ‚||z  j	                  «       |k(  sJ ‚||z  j	                  «       |k(  sJ ‚||z  j	                  «       |k(  sJ ‚|| z  j	                  «       |k(  sJ ‚|| z  j	                  «       |k(  sJ ‚|||z  z  j	                  «       |k(  sJ ‚|||z  z  j	                  «       |k(  sJ ‚||z  ||z  |z  z  j	                  «       ||z  k(  sJ ‚|| z  ||z  z  j	                  «       |k(  sJ ‚||z  |z  j	                  «       }||z  |z  j	                  d¬«      }	|	|k(  sJ ‚|j                  «       |	j                  «       k7  sJ ‚||z  |z  j	                  «       }||z  |z  j	                  d¬«      }	|	|k(  sJ ‚|j                  «       |	j                  «       k7  sJ ‚|j                  d«      }
|j                  dd¬	«      }||
k(  sJ ‚|j                  d«      }
|j                  dd¬	«      }||
k(  sJ ‚|j                  d
«      }
|j                  dd¬	«      }||
k(  sJ ‚|j                  d
«      }
|j                  dd¬	«      }||
k(  sJ ‚|j                  dd¬	«      }
|j                  dd¬	«      }|j                  «       |
j                  «       k(  sJ ‚|j                  dd¬	«      }
|j                  dd¬	«      }|j                  «       |
j                  «       k(  sJ ‚y )Nr,   r-   r  F©Úsortz(a&b)|(b&c)|(a&c)z((~a&b&c) | (a&~b&c) | (a&b&~c) | (a&b&c)Tr  úb&dz(a&b&c&d) | (b&d)z(~b&~d&a) | (~c&~d&b) | (a&c&d)zj(~a&b&~c&~d) | (a&~b&~c&~d) | (a&~b&c&~d) |
                          (a&~b&c&d) | (a&b&~c&~d) | (a&b&c&d))r   r   r8   r7   râ   r9   r   )r   rå   ræ   r,   r-   r  r-  r.  Úsorted_expressionÚunsorted_expressionr:   Úresults               r   rã   zDualBaseTestCase.test_simplify²  sä  € Ü!Ó#ˆÜ!Ó#ˆØ�O‰O˜CÓ ˆØ�O‰O˜CÓ ˆØ�O‰O˜CÓ ˆà�^‰^ˆØ�]‰]ˆà�A‘×ÑÓ! QÒ&Ð&Ð&à�Q˜‘U‘×%Ñ%Ó'¨1¨q©5Ò0Ð0Ð0à�B‘× Ñ Ó" bÒ(Ð(Ð(Ø�B‘× Ñ Ó" bÒ(Ð(Ð(à�B‘× Ñ Ó" aÒ'Ð'Ð'Ø�B‘× Ñ Ó" aÒ'Ð'Ð'à�Q�B‘× Ñ Ó" bÒ(Ð(Ð(Ø�Q�B‘× Ñ Ó" bÒ(Ð(Ð(à�Q˜‘U‘×%Ñ%Ó'¨1Ò,Ð,Ð,Ø�Q˜‘U‘×%Ñ%Ó'¨1Ò,Ð,Ð,Ø�Q‘˜1˜q™5 1™9Ñ%×/Ñ/Ó1°Q¸±UÒ:Ð:Ð:ð �a�R‘˜A ™EÑ"×,Ñ,Ó.°!Ò3Ð3Ð3ð  ™U Q™Y×0Ñ0Ó2ÐØ  1™u q™y×2Ñ2¸Ð2Ó>ÐØ"Ð&7Ò7Ð7Ð7Ø ×'Ñ'Ó)Ð-@×-GÑ-GÓ-IÒIÐIÐIà ™U Q™Y×0Ñ0Ó2ÐØ  1™u q™y×2Ñ2¸Ð2Ó>ÐØ"Ð&7Ò7Ð7Ð7Ø ×'Ñ'Ó)Ð-@×-GÑ-GÓ-IÒIÐIÐIà—>‘>Ð"5Ó6ˆØ—‘Ð JÐUY�ÓZˆØ˜Ò!Ð!Ð!à—>‘>Ð"5Ó6ˆØ—‘Ð JÐUY�ÓZˆØ˜Ò!Ð!Ð!à—>‘> %Ó(ˆØ—‘Ð 3¸d�ÓCˆØ˜Ò!Ð!Ð!à—>‘> %Ó(ˆØ—‘Ð 3¸d�ÓCˆØ˜Ò!Ð!Ð!à—>‘>Ð"CÈd�>ÓSˆØ—‘ðBàð  ó 
ˆð
 �}‰}‹ (§/¡/Ó"3Ò3Ð3Ð3à—>‘>Ð"CÈd�>ÓSˆØ—‘ðBàð  ó 
ˆð
 �}‰}‹ (§/¡/Ó"3Ò3Ð3Ñ3r   c                 óN  — t        «       }|j                  dd«      \  }}| | z  |z  | z  }| | z  | |g}|j                  |«      }|d   |d   c|d<   |d<   |j                  |«      }t        |«      dk(  sJ ‚t        |«      dk(  sJ ‚|d   |d   k(  sJ ‚|d   |d   k(  sJ ‚y )Nr,   r-   rÔ   rõ   r   )r   ÚsymbolsÚabsorbr  )r   r   r,   r-   r  ÚargsÚresult_originalÚresult_swappeds           r   Ú"test_absorption_invariant_to_orderz3DualBaseTestCase.test_absorption_invariant_to_orderû  sÞ   € Ü Ó"ˆà�‰˜s CÓ(‰ˆˆ1àˆR�1�"‰W˜‰M˜Q˜BÑˆàˆB�!�‰GØˆBØð
ˆð Ÿ(™( 4›.ˆà ™7 D¨¡GÐˆˆQ‰��a‘ØŸ™ $›ˆä�?Ó# qÒ(Ð(Ð(Ü�>Ó" aÒ'Ð'Ð'Ø˜qÑ! ^°AÑ%6Ò6Ð6Ð6Ø˜qÑ! ^°AÑ%6Ò6Ð6Ñ6r   c                 óÎ   — t        «       } |j                  dŽ \  }}}d}|j                  |«      }| | z  | z  }|j                  «       |j                  «       k(  sJ ‚||k(  sJ ‚y )NÚabcz(~a | ~b | ~c))r   rT  r   r9   )r   r   r,   r-   r  Útest_expression_strÚparsedÚtest_expressions           r   ÚEtest_parse_complex_expression_should_create_same_expression_as_pythonzVDualBaseTestCase.test_parse_complex_expression_should_create_same_expression_as_python  su   € ä Ó"ˆØ!�'—/‘/ 5Ð)‰ˆˆ1ˆaà2ÐØ—‘Ð2Ó3ˆØ˜" ˜r™' Q B™,ˆð �}‰}‹ /×"8Ñ"8Ó":Ò:Ð:Ð:Ø˜Ò(Ð(Ñ(r   c                 ó@  — t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }d}|j                  |d¬«      }| | z  | z  | z  | | z  | z  |z  z  | |z  | z  | z  z  | |z  |z  |z  z  | |z  | z  |z  z  | |z  |z  | z  z  || z  | z  |z  z  | |z  |z  |z  z  || z  |z  |z  z  ||z  |z  |z  z  j                  «       }|j	                  «       |j	                  «       k(  sJ ‚y )Nr,   r-   r  r/   zº
            (~a&~b&~c&~d) | (~a&~b&~c&d) | (~a&b&~c&~d) |
            (~a&b&c&d) | (~a&b&~c&d) | (~a&b&c&~d) |
            (a&~b&~c&d) | (~a&b&c&d) | (a&~b&c&d) | (a&b&c&d)
            Tr  )r   r   r   râ   r9   ©	r   r   r,   r-   r  r/   r\  r]  r^  s	            r   Ú5test_simplify_complex_expression_parsed_with_simplifyzFDualBaseTestCase.test_simplify_complex_expression_parsed_with_simplify#  sŠ  € ô !Ó"ˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆðÐð —‘Ð2¸T�ÓBˆð ˆR�1�"‰W˜�r‰\˜Q˜BÑØˆr�Q�B‰w˜!˜‰|˜aÑñ!àˆr�A‰v˜˜‰{˜a˜RÑñ!ð ˆr�A‰v˜‰z˜A‰~ñð ˆr�A‰v˜˜‰{˜Q‰ñ	 ð
 ˆr�A‰v˜‰z˜Q˜B‰ñ ð �A�2‰v˜˜‰{˜Q‰ñ ð ˆr�A‰v˜‰z˜A‰~ñð �A�2‰v˜‰z˜A‰~ñð �1‰u�q‰y˜1‰}ñ	÷ ‰(‹*ð 	ð �}‰}‹ /×"8Ñ"8Ó":Ò:Ð:Ñ:r   c                 ó   — t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }d}|j                  |«      }| | z  | z  | z  | | z  | z  |z  z  | |z  | z  | z  z  | |z  |z  |z  z  | |z  | z  |z  z  | |z  |z  | z  z  || z  | z  |z  z  | |z  |z  |z  z  || z  |z  |z  z  ||z  |z  |z  z  }|j                  «       |j                  «       k(  sJ ‚y )Nr,   r-   r  r/   z¦
            ~a&~b&~c&~d | ~a&~b&~c&d | ~a&b&~c&~d |
            ~a&b&c&d | ~a&b&~c&d | ~a&b&c&~d |
            a&~b&~c&d | ~a&b&c&d | a&~b&c&d | a&b&c&d
            )r   r   r   r9   ra  s	            r   ÚTtest_complex_expression_without_parens_parsed_or_built_in_python_should_be_identicalzeDualBaseTestCase.test_complex_expression_without_parens_parsed_or_built_in_python_should_be_identicalE  s}  € ô !Ó"ˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆðÐð —‘Ð2Ó3ˆð ˆB�!�‰G�q�b‰L˜A˜2ÑØˆb�A�2‰g˜˜‰l˜QÑñàˆb�1‰f˜�r‰k˜Q˜BÑñð ˆb�1‰f�q‰j˜1‰nñð ˆb�1‰f˜�r‰k˜A‰oñ	ð
 ˆb�1‰f�q‰j˜A˜2‰oñð �1�"‰f˜�r‰k˜A‰oñð ˆb�1‰f�q‰j˜1‰nñð �1�"‰f�q‰j˜1‰nñð �!‰e�a‰i˜!‰mñ	ð 	ð �}‰}‹ /×"8Ñ"8Ó":Ò:Ð:Ñ:r   c                 ó  — t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  }dj                  dj	                  «       «      }| | z  | z  | z  | | z  | z  |z  z  | |z  | z  | z  z  | |z  |z  |z  z  | |z  | z  |z  z  | |z  |z  | z  z  || z  | z  |z  z  | |z  |z  |z  z  || z  |z  |z  z  ||z  |z  |z  z  } ||«      }	|t        |	«      k(  sJ ‚|| z  |z  | |z  z  | | z  z  ||z  |z  z  }
|j                  «       j                  «       |
j                  «       k(  sJ ‚ ||d¬«      }	|	j                  «       j                  «       |
j                  «       j                  «       k(  sJ ‚d	}t        |	«      |k(  sJ ‚ ||«      }|j                  «       j                  «       |
j                  «       k(  sJ ‚t        |j                  «       «      |k(  sJ ‚|j                  |j                  |j                  |j                  d«      «      |j                  |j                  d«      «      |j                  |j                  d«      «      |j                  |j                  d«      «      «      |j                  |j                  |j                  d«      «      |j                  |j                  d«      «      |j                  |j                  d«      «      |j                  d«      «      |j                  |j                  |j                  d«      «      |j                  d«      |j                  |j                  d«      «      |j                  |j                  d«      «      «      |j                  |j                  |j                  d«      «      |j                  d«      |j                  d«      |j                  d«      «      |j                  |j                  |j                  d«      «      |j                  d«      |j                  |j                  d«      «      |j                  d«      «      |j                  |j                  |j                  d«      «      |j                  d«      |j                  d«      |j                  |j                  d«      «      «      |j                  |j                  d«      |j                  |j                  d«      «      |j                  |j                  d«      «      |j                  d«      «      |j                  |j                  |j                  d«      «      |j                  d«      |j                  d«      |j                  d«      «      |j                  |j                  d«      |j                  |j                  d«      «      |j                  d«      |j                  d«      «      |j                  |j                  d«      |j                  d«      |j                  d«      |j                  d«      «      «
      }
 ||«      }|j                  «       }||
k(  sJ ‚y )
Nr,   r-   r  r/   r‡   z¶
            (~a&~b&~c&~d) | (~a&~b&~c&d) | (~a&b&~c&~d) |
            (~a&b&c&d) | (~a&b&~c&d) | (~a&b&c&~d) |
            (a&~b&~c&d) | (~a&b&c&d) | (a&~b&c&d) | (a&b&c&d)
        Tr  z(a&~b&d)|(~a&b)|(~a&~c)|(b&c&d))r   r   r   ÚjoinrR   r   râ   r9   r5   r4   r6   )r   r   r,   r-   r  r/   r   r\  r^  r]  r:   Úexpected_strÚparsed2rR  s                 r   Ú7test_simplify_complex_expression_parsed_then_simplifiedzHDualBaseTestCase.test_simplify_complex_expression_parsed_then_simplifiede  sÓ  € ô !Ó"ˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ—‘ˆà Ÿg™gð÷ ‰E‹Gó
Ðð ˆR�1�"‰W˜�r‰\˜Q˜BÑØˆr�Q�B‰w˜!˜‰|˜aÑñ!àˆr�A‰v˜˜‰{˜a˜RÑñ!ð ˆr�A‰v˜‰z˜A‰~ñð ˆr�A‰v˜˜‰{˜Q‰ñ	 ð
 ˆr�A‰v˜‰z˜Q˜B‰ñ ð �A�2‰v˜˜‰{˜Q‰ñ ð ˆr�A‰v˜‰z˜A‰~ñð �A�2‰v˜‰z˜A‰~ñð �1‰u�q‰y˜1‰}ñ	ð 	ñ Ð*Ó+ˆØ"¤c¨&£kÒ1Ð1Ð1à˜˜‘F˜Q‘J A 2¨¡6Ñ*¨q¨b°A°2©gÑ6¸!¸a¹%À!¹)ÑDˆØ×'Ñ'Ó)×0Ñ0Ó2°h·o±oÓ6GÒGÐGÐGáÐ*°TÔ:ˆð
 �‰Ó ×'Ñ'Ó)¨X×->Ñ->Ó-@×-GÑ-GÓ-IÒIÐIÐIà8ˆÜ�6‹{˜lÒ*Ð*Ð*áÐ+Ó,ˆØ×ÑÓ!×(Ñ(Ó*¨h¯o©oÓ.?Ò?Ð?Ð?ä�7×#Ñ#Ó%Ó&¨,Ò6Ð6Ð6à—:‘:Ø�K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0ó	ð �K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#ó	ð �K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0ó	ð �K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#Ø—‘˜sÓ#Ø—‘˜sÓ#ó	ð �K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#ó	ð �K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#Ø—‘˜sÓ#Ø—‘˜GŸN™N¨3Ó/Ó0ó	ð �K‰KØ—‘˜sÓ#Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#ó	ð �K‰KØ—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#Ø—‘˜sÓ#Ø—‘˜sÓ#ó	ð �K‰KØ—‘˜sÓ#Ø—‘˜GŸN™N¨3Ó/Ó0Ø—‘˜sÓ#Ø—‘˜sÓ#ó	ð �K‰KØ—‘˜sÓ# W§^¡^°CÓ%8¸'¿.¹.ÈÓ:MÈwÏ~É~Ð^aÓObóóo:
ˆñx Ð*Ó+ˆØ—‘Ó"ˆØ˜Ò!Ð!Ñ!r   c                 óÒ   — t        «       }d}| j                  t        «      5 }|j                  |«       |j                  j
                  t        k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nz	a (and b))r   rÖ   r   r   Ú	exceptionr®   r   )r   r   r   Úcontexts       r   Ú=test_parse_invalid_nested_and_should_raise_a_proper_exceptionzNDualBaseTestCase.test_parse_invalid_nested_and_should_raise_a_proper_exceptionÚ  s_   € Ü Ó"ˆØˆà×ÑœzÓ*ð 	I¨gØ�M‰M˜$Ôà×$Ñ$×/Ñ/Ô3HÒHÐHÑH÷	I÷ 	Iñ 	Iús   ¢1AÁA&c                 óÌ   — t        «       j                  } |d«      } |d«      } |d«      } |d«      }|j                  |d¬«      |k(  sJ ‚|j                  |d¬«      |k(  sJ ‚y )Núa&b&crO  za&cr-   Tr  )r   r   Úsubtract)r   r   r   Úp1Úp2rR  s         r   Útest_subtractzDualBaseTestCase.test_subtractã  sj   € ÜÓ ×&Ñ&ˆÙ�W‹~ˆÙ�5‹\ˆÙ�5‹\ˆÙ�s“ˆØ�}‰}˜R¨$ˆ}Ó/°4Ò7Ð7Ð7Ø�}‰}˜R¨$ˆ}Ó/°6Ò9Ð9Ñ9r   c                 óÜ   — t        «       j                  } |d«      } |d«      }||k7  sJ ‚|j                  «       |k(  sJ ‚ |d«      } |d«      }||k7  sJ ‚|j                  «       |k(  sJ ‚y )Nz	a & (b&c)ro  za | ((b&c) | (a&c)) | bza | (b&c) | (a&c) | b)r   r   Úflatten)r   r   r9  r:  s       r   Útest_flattenzDualBaseTestCase.test_flattenì  sw   € ÜÓ ×&Ñ&ˆá�;ÓˆÙ�7‹^ˆØ�RŠxˆˆxØ�z‰z‹|˜rÒ!Ð!Ð!áÐ,Ó-ˆÙÐ*Ó+ˆØ�RŠxˆˆxØ�z‰z‹|˜rÒ!Ð!Ñ!r   c           
      ó  — t        «       }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|||z  z  j                  «       ||z  ||z  z  k(  sJ ‚|j                  |||z  ||z  «      }|j	                  |j                  |||«      |j                  |||«      |j                  |||«      |j                  |||«      «      }|j                  «       |k(  sJ ‚y )Nr,   r-   r  r/   r  )r   r   Údistributiver4   r5   )	r   r   r,   r-   r  r/   r  r9  r:  s	            r   Útest_distributivez"DualBaseTestCase.test_distributiveù  sû   € Ü Ó"ˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�N‰N˜3ÓˆØ�Q˜‘U‘×)Ñ)Ó+°°A±¸!¸a¹%Ñ/@Ò@Ð@Ð@Ø�[‰[˜˜Q ™U a¨!¡eÓ-ˆØ�Z‰ZØ�K‰K˜˜1˜aÓ  '§+¡+¨a°°AÓ"6¸¿¹ÀAÀqÈ!Ó8LÈgÏkÉkÐZ[Ð]^Ð`aÓNbó
ˆð �‰Ó  BÒ&Ð&Ñ&r   c                 óR  — ddl m} t        d«      t        d«      t        d«      }}} |||«      } |||«      } ||||«      } ||||«      }||k(  sJ ‚||k(  sJ ‚||k(  sJ ‚||k(  rJ ‚|dk(  rJ ‚|dusJ ‚|€J ‚||k7  rJ ‚||k7  rJ ‚||k7  rJ ‚||k7  sJ ‚|dk7  sJ ‚|dusJ ‚|€J ‚y )Nr   r6  r,   r-   r  rõ   T)rÕ   r7  r   )	r   r7  r,   r-   r  r9  Út1_2r:  Út2_2s	            r   Ú
test_equalzDualBaseTestCase.test_equal  sõ   € Ý,ä˜“+œv c›{¬F°3«Kˆaˆ1ˆÙ�a˜‹^ˆÙ˜˜1‹~ˆá�a˜˜AÓˆÙ˜˜1˜aÓ ˆð �RŠxˆˆxØ�rŠzÐˆzØ�rŠzÐˆzØ˜’8Ðˆ|Ø˜’7Ðˆ{Ø˜‘:Ð�:Ø�:Ð�:ð ˜’8Ðˆ|Ø˜2’:Ðˆ~Ø˜2’:Ðˆ~Ø�RŠxˆˆxØ�QŠwˆˆwØ˜‰~Ðˆ~Øˆ~Ð‰~r   c                 óò  — t        «       }|j                  d«      |j                  d«      |j                  d«      }}}|j                  ||«      |j                  |||«      k  sJ ‚|j                  ||«      |j                  |||«      kD  rJ ‚|j                  ||«      |j                  ||«      k  sJ ‚|j                  ||«      |j                  ||«      kD  rJ ‚|j                  ||«      |j                  ||«      k  sJ ‚|j                  ||«      |j                  ||«      kD  rJ ‚|j                  ||«      |j                  ||«      k  rJ ‚|j                  ||«      |j                  ||«      kD  rJ ‚y )Nrõ   rÔ   rö   )r   r   r4   )r   r   r  r  Úzs        r   rî   zDualBaseTestCase.test_order#  sY  € Ü Ó"ˆØ—.‘. Ó# W§^¡^°AÓ%6¸¿¹ÀqÓ8Iˆaˆ1ˆØ�{‰{˜1˜aÓ  7§;¡;¨q°!°QÓ#7Ò7Ð7Ð7Ø—;‘;˜q !Ó$ w§{¡{°1°a¸Ó';Ò;Ð;Ð;Ø�{‰{˜1˜aÓ  7§;¡;¨q°!Ó#4Ò4Ð4Ð4Ø—;‘;˜q !Ó$ w§{¡{°1°aÓ'8Ò8Ð8Ð8Ø�{‰{˜1˜aÓ  7§;¡;¨q°!Ó#4Ò4Ð4Ð4Ø—;‘;˜q !Ó$ w§{¡{°1°aÓ'8Ò8Ð8Ð8Ø—;‘;˜q !Ó$ w§{¡{°1°aÓ'8Ò8Ð8Ð8Ø—;‘;˜q !Ó$ w§{¡{°1°aÓ'8Ò8Ð8Ð8Ð8r   c                 ó@  — t        «       j                  }t         |d«      «      dk(  sJ ‚t         |d«      «      sJ d«       ‚t         |d«      «      dk(  sJ ‚t         |d«      «      sJ d«       ‚t         |d«      «      dk(  sJ ‚t         |d«      «      sJ d«       ‚y )NrB  zAND(Symbol('a') == Symbol('a'))rC  zOR(Symbol('a') == Symbol('a'))z(a|b)&cz0AND(OR(Symbol('a'), Symbol('b')) == Symbol('c')))r   r   r   rð   r$  s     r   rñ   zDualBaseTestCase.test_printing/  sŸ   € ÜÓ ×&Ñ&ˆÜ‘5˜“<Ó  EÒ)Ð)Ð)Ü‘E˜%“LÔ!ÐDÐ#DÓDÐ!Ü‘5˜“<Ó  EÒ)Ð)Ð)Ü‘E˜%“LÔ!ÐCÐ#CÓCÐ!Ü‘5˜Ó#Ó$¨	Ò1Ð1Ð1Ü‘E˜)Ó$Ô%ÐYÐ'YÓYÑ%r   )r$   r%   r&   ÚmaxDiffrù   rü   rÜ   rß   rE  rJ  rê   rã   rY  r   r_  rb  rd  ri  rm  rs  rv  ry  r}  rî   rñ   r'   r   r   r3  r3  q  s±   „ à€Gò.ò ò&ò Dò@ò
=ò
7òG4òR7ð, ñ)ó ð)ð" ñ;ó ð;ðB ñ;ó ð;ð> ñr"ó ðr"òhIò:ò"ò'òò8
9óZr   r3  c                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚOtherTestCasec                 ón  — t        «       }|j                  |j                  f|j                  d«      |j                  d«      f|j	                  d«      f|j	                  d«      ff}t        |«      D ]A  \  }}|D ]7  }t        |dz   t        |«      «      D ]  }||   D ]  }||k  sJ ‚||kD  rŒJ ‚ Œ Œ9 ŒC y )Nr  r  zx&yzx|yrõ   )r   r7   r8   r   r   rP   Úranger  )r   r   ÚorderÚiÚtestsÚcase1ÚjÚcase2s           r   Útest_class_orderzOtherTestCase.test_class_order:  sË   € ä Ó"ˆà�\‰\˜7Ÿ=™=Ð)Ø�^‰^˜CÓ  '§.¡.°Ó"5Ð6Ø�]‰]˜5Ó!Ð#Ø�]‰]˜5Ó!Ð#ð	
ˆô " %Ó(ò 	-‰HˆAˆuØò -�Ü˜q 1™u¤c¨%£jÓ1ò -�AØ!& q¡ò -˜Ø$ uš}Ð,˜}Ø$ u›}Ð,˜}ñ-ñ-ñ-ñ	-r   c                 óØ  — t        «       }|j                  d«      |j                  d«      |j                  d«      }}}|j                  d«      |j                  k(  sJ ‚|j                  d«      |j                  k(  sJ ‚|j                  d«      |j                  k(  sJ ‚|j                  d«      |j                  k(  sJ ‚|j                  d«      |k(  sJ ‚|j                  d«      |k(  sJ ‚|j                  d«      |k(  sJ ‚|j                  d	«      |j                  d
«      k(  sJ ‚|j                  d
«      |j                  d«      k(  sJ ‚|j                  d	«      | k(  sJ ‚|j                  d«      | k(  sJ ‚|j                  dd¬«      |  j                  «       k(  sJ ‚|j                  d«      ||z  k(  sJ ‚|j                  d«      | |z  k(  sJ ‚|j                  d«      || z  k(  sJ ‚|j                  d«      |j                  d«      k(  sJ ‚|j                  d«      |j                  |||«      k(  sJ ‚|j                  d«      |j                  d«      k(  sJ ‚|j                  d«      |j                  | | | «      k(  sJ ‚|j                  d«      ||z  k(  sJ ‚|j                  d«      | |z  k(  sJ ‚|j                  d«      || z  k(  sJ ‚|j                  d«      |j                  d«      k(  sJ ‚|j                  d«      |j                  |||«      k(  sJ ‚|j                  d«      |j                  | | | «      k(  sJ ‚|j                  d«      ||z  k(  sJ ‚|j                  dd¬«      |||z  z  j                  «       k(  sJ ‚|j                  dd¬«      ||| z  z  j                  «       k(  sJ ‚|j                  dd¬«      ||z  |||z  |||z  z  z  z  z  j                  «       k(  sJ ‚|j                  dd¬«      |j                  dd¬«      k(  sJ ‚|j                  d«      |j                  d«      k(  sJ ‚|j                  d«      |j                  d«      k(  sJ ‚y ) Nr,   r-   r  ru   z(0)rs   z(1)z(a)r!  z~(a)z(~a)r&  Tr  rH  z~a&bza&~bro  r+  rG  z~a|bza|~búa|b|cz~a|~b|~cz(a|b)za&(a|b)za&(a|~b)z(a&b)|(b&((c|a)&(b|(c&a))))za&b | b&(c|a)&(b|c&a)Ú1abcÚ_abc)r   r   r   r8   r7   râ   r4   r5   )r   r   r,   r-   r  s        r   Ú
test_parsezOtherTestCase.test_parseJ  s_  € Ü Ó"ˆØ—.‘. Ó% w§~¡~°cÓ':¸G¿N¹NÈ3Ó<Oˆaˆ1ˆØ�}‰}˜SÓ! W§]¡]Ò2Ð2Ð2Ø�}‰}˜UÓ# w§}¡}Ò4Ð4Ð4Ø�}‰}˜SÓ! W§\¡\Ò1Ð1Ð1Ø�}‰}˜UÓ# w§|¡|Ò3Ð3Ð3Ø�}‰}˜SÓ! QÒ&Ð&Ð&Ø�}‰}˜UÓ# qÒ(Ð(Ð(Ø�}‰}˜UÓ# qÒ(Ð(Ð(Ø�}‰}˜TÓ" g§m¡m°FÓ&;Ò;Ð;Ð;Ø�}‰}˜VÓ$¨¯©°fÓ(=Ò=Ð=Ð=Ø�}‰}˜TÓ" q bÒ(Ð(Ð(Ø�}‰}˜VÓ$¨¨Ò*Ð*Ð*Ø�}‰}˜U¨Tˆ}Ó2¸¸°s·n±nÓ6FÒFÐFÐFØ�}‰}˜UÓ# q¨1¡uÒ,Ð,Ð,Ø�}‰}˜VÓ$¨¨¨Q©Ò.Ð.Ð.Ø�}‰}˜VÓ$¨¨Q¨B©Ò.Ð.Ð.Ø�}‰}˜WÓ%¨¯©°wÓ)?Ò?Ð?Ð?Ø�}‰}˜WÓ%¨¯©°Q¸¸1Ó)=Ò=Ð=Ð=Ø�}‰}˜ZÓ(¨G¯M©M¸*Ó,EÒEÐEÐEØ�}‰}˜ZÓ(¨G¯K©K¸¸¸Q¸BÀÀÓ,CÒCÐCÐCØ�}‰}˜UÓ# q¨1¡uÒ,Ð,Ð,Ø�}‰}˜VÓ$¨¨¨Q©Ò.Ð.Ð.Ø�}‰}˜VÓ$¨¨Q¨B©Ò.Ð.Ð.Ø�}‰}˜WÓ%¨¯©°wÓ)?Ò?Ð?Ð?Ø�}‰}˜WÓ%¨¯©°A°q¸!Ó)<Ò<Ð<Ð<Ø�}‰}˜ZÓ(¨G¯J©J¸°r¸A¸2À¸rÓ,BÒBÐBÐBØ�}‰}˜WÓ%¨¨Q©Ò.Ð.Ð.Ø�}‰}˜Y°ˆ}Ó6¸1ÀÀAÁ¹;×:PÑ:PÓ:RÒRÐRÐRØ�}‰}˜Z°$ˆ}Ó7¸AÀÀaÀRÁ¹L×;RÑ;RÓ;TÒTÐTÐTà�M‰MÐ7À$ˆMÓGØ�Q‘˜1  Q¡¨1°°A±©;Ñ 7Ñ8Ñ9×CÑCÓEòFð	
ðFð �}‰}Ð:ÀTˆ}ÓJÈgÏmÉmØ#¨dð O\ó O
ò 
ð 	
ð 
ð �~‰~˜fÓ%¨¯©°vÓ)>Ò>Ð>Ð>Ø�~‰~˜fÓ%¨¯©°vÓ)>Ò>Ð>Ñ>r   c                 ó„  — t        «       }|j                  d«      |j                  d«      |j                  d«      }}}||z  |z  }|j                  ||i«      j                  «       ||z  k(  sJ ‚|j                  ||i«      j                  «       |k(  sJ ‚|j                  |||z  i«      j                  «       |j	                  d«      j                  «       k(  sJ ‚|j                  ||z  |i«      j                  «       ||z  k(  sJ ‚|j                  ||j
                  i«      j                  «       |j
                  k(  sJ ‚y )Nr,   r-   r  z	(b|c)&b|c)r   r   Úsubsrâ   r   r7   ©r   r   r,   r-   r  r   s         r   Ú	test_subszOtherTestCase.test_subss  s  € Ü Ó"ˆØ—.‘. Ó% w§~¡~°cÓ':¸G¿N¹NÈ3Ó<Oˆaˆ1ˆØ�1‰u�q‰yˆØ�y‰y˜!˜Q˜Ó ×)Ñ)Ó+¨q°1©uÒ4Ð4Ð4Ø�y‰y˜!˜Q˜Ó ×)Ñ)Ó+¨tÒ3Ð3Ð3Ø�y‰y˜!˜Q ™U˜Ó$×-Ñ-Ó/°7·=±=ÀÓ3M×3VÑ3VÓ3XÒXÐXÐXØ�y‰y˜!˜a™% ˜Ó$×-Ñ-Ó/°1°q±5Ò8Ð8Ð8Ø�y‰y˜!˜WŸ\™\Ð*Ó+×4Ñ4Ó6¸'¿,¹,ÒFÐFÑFr   c                 ó¶  — t        «       }|j                  d«      |j                  d«      |j                  d«      }}}||z  |z  }|j                  i |j                  ¬«      j	                  «       |j                  k(  sJ ‚|j                  ||j
                  ||j
                  i|j                  ¬«      j	                  «       |j
                  k(  sJ ‚|j                  j                  i |j
                  ¬«      j	                  «       |j                  k(  sJ ‚|j
                  j                  i |j                  ¬«      j	                  «       |j
                  k(  sJ ‚y )Nr,   r-   r  )Údefault)r   r   r“  r7   râ   r8   r”  s         r   Útest_subs_defaultzOtherTestCase.test_subs_default}  s  € Ü Ó"ˆØ—.‘. Ó% w§~¡~°cÓ':¸G¿N¹NÈ3Ó<Oˆaˆ1ˆØ�1‰u�q‰yˆØ�y‰y˜ W§\¡\ˆyÓ2×;Ñ;Ó=ÀÇÁÒMÐMÐMà�I‰I�q˜'Ÿ-™-¨¨G¯M©MÐ:ÀGÇLÁLˆIÓQ×ZÑZÓ\Ø�}‰}òð	
ðð �|‰|× Ñ  ¨W¯]©]Ð Ó;×DÑDÓFÈ'Ï,É,ÒVÐVÐVØ�}‰}×!Ñ! "¨g¯l©lÐ!Ó;×DÑDÓFÈ'Ï-É-ÒWÐWÑWr   c                 ó  — t        «       }|j                  d«      }|j                  |«      |k(  sJ ‚|j                  |«      |k(  sJ ‚|j                  d«      }|j                  |«      |k(  sJ ‚|j                  |«      |k(  sJ ‚|j                  d«      }|j                  d«      }|j                  d«      }|j                  |«      |k(  sJ ‚|j                  |«      |k(  sJ ‚|j                  d«      }|j                  d«      }|j                  d«      }|j                  |«      |k(  sJ ‚|j                  |«      |k(  sJ ‚|j                  d	«      }|j	                  ||j
                  «      }|j                  d
«      }||k(  sJ ‚y )NrH  rG  z(a&b)|(c&b)z(a&b)|(b&c)zb&(a|c)z(a|b)&(c|b)zb|(a&c)z(a|b)&(b|c)z)((s|a)&(s|b)&(s|c)&(s|d)&(e|c|d))|(a&e&d)z#(a|s)&(b|e|s)&(c|d|e)&(c|e|s)&(d|s))r   r   ÚdnfÚcnfÚ	normalizer4   )r   r   r   Ú
result_dnfÚ
result_cnfrR  r:   s          r   Útest_normalizezOtherTestCase.test_normalize‰  st  € Ü Ó"ˆà�}‰}˜UÓ#ˆØ�{‰{˜4Ó  DÒ(Ð(Ð(Ø�{‰{˜4Ó  DÒ(Ð(Ð(à�}‰}˜UÓ#ˆØ�{‰{˜4Ó  DÒ(Ð(Ð(Ø�{‰{˜4Ó  DÒ(Ð(Ð(à�}‰}˜]Ó+ˆØ—]‘] =Ó1ˆ
Ø—]‘] 9Ó-ˆ
Ø�{‰{˜4Ó  JÒ.Ð.Ð.Ø�{‰{˜4Ó  JÒ.Ð.Ð.à�}‰}˜]Ó+ˆØ—]‘] 9Ó-ˆ
Ø—]‘] =Ó1ˆ
Ø�{‰{˜4Ó  JÒ.Ð.Ð.Ø�{‰{˜4Ó  JÒ.Ð.Ð.à�}‰}ÐHÓIˆØ×"Ñ" 4¨¯©Ó2ˆØ—=‘=Ð!FÓGˆØ˜6Ò!Ð!Ñ!r   c                 óä   — t        «       }|j                  d«      }|j                  d«      |j                  d«      |j                  d«      |j                  d«      g|j                  «       k(  sJ ‚y ©Núa and b or a and cr,   r-   r  )r   r   r   Úget_literals©r   ÚalgÚexps      r   Ú7test_get_literals_return_all_literals_in_original_orderzEOtherTestCase.test_get_literals_return_all_literals_in_original_order¥  sg   € ÜÓˆØ�i‰iÐ,Ó-ˆà�J‰J�s‹OØ�J‰J�s‹OØ�J‰J�s‹OØ�J‰J�s‹Oð	
ð
 ×ÑÓò ð 	 ñ  r   c                 óä   — t        «       }|j                  d«      }|j                  d«      |j                  d«      |j                  d«      |j                  d«      g|j                  «       k(  sJ ‚y )Nza and b or True and a and cr,   r-   r  )r   r   r   Úget_symbolsr¤  s      r   Ú5test_get_symbols_return_all_symbols_in_original_orderzCOtherTestCase.test_get_symbols_return_all_symbols_in_original_order¯  se   € ÜÓˆØ�i‰iÐ5Ó6ˆà�J‰J�s‹OØ�J‰J�s‹OØ�J‰J�s‹OØ�J‰J�s‹Oð	
ð
 �_‰_Óòð 	ñ r   c                 óÎ   — t        «       }|j                  d«      }t        |j                  d«      |j                  d«      |j                  d«      g«      |j                  k(  sJ ‚y r¡  ©r   r   rÚ   r   rÙ   r¤  s      r   Ú+test_literals_return_set_of_unique_literalsz9OtherTestCase.test_literals_return_set_of_unique_literals¹  sO   € ÜÓˆØ�i‰iÐ,Ó-ˆÜ�C—J‘J˜s“O S§Z¡Z°£_°c·j±jÀ³oÐFÓGÈ3Ï<É<ÒWÐWÑWr   c                 óÎ   — t        «       }|j                  d«      }t        |j                  d«      |j                  d«      |j                  d«      g«      |j                  k(  sJ ‚y )Núa and not b and not not cr,   znot bznot cr¬  r¤  s      r   Útest_literals_and_negationz(OtherTestCase.test_literals_and_negation¾  sT   € ÜÓˆØ�i‰iÐ3Ó4ˆÜ�C—J‘J˜s“O S§Y¡Y¨wÓ%7¸¿¹À7Ó9KÐLÓMÐQT×Q]ÑQ]Ò]Ð]Ñ]r   c                 óÎ   — t        «       }|j                  d«      }t        |j                  d«      |j                  d«      |j                  d«      g«      |j                  k(  sJ ‚y )Nr¯  r,   r-   r  )r   r   rÚ   r   rT  r¤  s      r   Útest_symbols_and_negationz'OtherTestCase.test_symbols_and_negationÃ  sO   € ÜÓˆØ�i‰iÐ3Ó4ˆÜ�C—J‘J˜s“O S§Z¡Z°£_°c·j±jÀ³oÐFÓGÈ3Ï;É;ÒVÐVÑVr   c                 ór   — t        «       }|j                  d«      }t        g d¢«      |j                  k(  sJ ‚y )Nr¢  ©r,   r-   r  )r   r   rÚ   Úobjectsr¤  s      r   Ú-test_objects_return_set_of_unique_Symbol_objsz;OtherTestCase.test_objects_return_set_of_unique_Symbol_objsÈ  s0   € ÜÓˆØ�i‰iÐ,Ó-ˆÜ’?Ó# s§{¡{Ò2Ð2Ñ2r   c                 ó&  ‡— ddl m}m}m} ddlm}  G ˆfd„d|«      } G ˆfd„d|«      } G ˆfd„d	|«      } |t        «      Šd
}t        |||¬«      }	|	j                  |«      }
|	j                  |
«      }t        |«      dk(  sJ ‚‰ddddœk(  sJ ‚y )Nr   )r4   r6   r5   )Údefaultdictc                   ó"   •‡ — e Zd Zˆ ˆfd„Zˆ xZS )ú8OtherTestCase.test_normalize_blowup.<locals>.CountingNotc                 ó:   •— ‰dxx   dz  cc<   t         ‰| �  «       S )NÚCountingNotrõ   ©rE   râ   )r   rH   Úcountss    €€r   râ   zAOtherTestCase.test_normalize_blowup.<locals>.CountingNot.simplifyÓ  s!   ø€ Ø�}Ó%¨Ñ*Ó%Ü‘wÑ'Ó)Ð)r   ©r$   r%   r&   râ   rZ   ©rH   r¾  s   @€r   r¼  rº  Ò  s   ù„ ÷*ñ *r   r¼  c                   ó$   •‡ — e Zd Zdˆ ˆfd„	Zˆ xZS )ú8OtherTestCase.test_normalize_blowup.<locals>.CountingAndc                 ó>   •— ‰dxx   dz  cc<   t         ‰| �  |¬«      S )NÚCountingAndrõ   rM  r½  ©r   rN  rH   r¾  s     €€r   râ   zAOtherTestCase.test_normalize_blowup.<locals>.CountingAnd.simplifyØ  s&   ø€ Ø�}Ó%¨Ñ*Ó%Ü‘wÑ'¨TÐ'Ó2Ð2r   ©Tr¿  rÀ  s   @€r   rÄ  rÂ  ×  ó   ù„ ÷3ò 3r   rÄ  c                   ó$   •‡ — e Zd Zdˆ ˆfd„	Zˆ xZS )ú7OtherTestCase.test_normalize_blowup.<locals>.CountingOrc                 ó>   •— ‰dxx   dz  cc<   t         ‰| �  |¬«      S )NÚ
CountingOrrõ   rM  r½  rÅ  s     €€r   râ   z@OtherTestCase.test_normalize_blowup.<locals>.CountingOr.simplifyÝ  s&   ø€ Ø�|Ó$¨Ñ)Ó$Ü‘wÑ'¨TÐ'Ó2Ð2r   rÆ  r¿  rÀ  s   @€r   rË  rÉ  Ü  rÇ  r   rË  a|  
        a & (
            (b & c & d & e & f & g)
            | (c & f & g & h & i & j)
            | (c & d & f & g & i & l & o & u)
            | (c & e & f & g & i & p & y & ~v)
            | (c & f & g & i & j & z & ~(c & f & g & i & j & k))
            | (c & f & g & t & ~(b & c & d & e & f & g))
            | (c & f & g & ~t & ~(b & c & d & e & f & g))
        )
        )Ú	NOT_classÚ	AND_classÚOR_classza&c&f&gé,   éÁ   iº	  )rÄ  r¼  rË  )Úbooleanr4   r6   r5   Úcollectionsr¸  Úintr   r   r›  r   )r   r4   r6   r5   r¸  r¼  rÄ  rË  Úformular   r   r›  r¾  s               @r   Útest_normalize_blowupz#OtherTestCase.test_normalize_blowupÍ  sŸ   ø€ ß(Ñ(Ý+ö	*˜#ô 	*ö
	3˜#ô 	3ö
	3˜ô 	3ñ
 œSÓ!ˆð

ˆô !Ø!Ø!Øô
ˆð �}‰}˜WÓ%ˆØ�k‰k˜$ÓˆÜ�3‹x˜9Ò$Ð$Ð$ð ¨¸CÈtÑTÒTÐTÑTr   N)r$   r%   r&   rŒ  r‘  r•  r˜  rŸ  r§  rª  r­  r°  r²  r¶  rÕ  r'   r   r   rƒ  rƒ  9  sE   „ ò-ò '?òRGò
Xò"ò8 òòXò
^ò
Wò
3ó
/Ur   rƒ  c                   ó   — e Zd Zd„ Zy)ÚBooleanBoolTestCasec           
      ón  — t        «       }|j                  d«      |j                  d«      |j                  d«      }}}||z  |z  }| j                  t        t        |j                  ||j                  i«      «       | j                  t        t        |j                  ||j                  i«      «       | j                  t        t        |j                  ||j                  i«      «       | j                  t        t        |j                  ||j                  ||j                  i«      «       |j                  ||j                  id¬«      }|j                  «       }||j                  k(  sJ ‚|j                  ||j                  ||j                  id¬«      }|j                  «       }||j                  k(  sJ ‚y )Nr,   r-   r  Tr  )r   r   rÖ   r‰   r×   r“  r7   râ   )r   r   r,   r-   r  r   rR  s          r   Ú	test_boolzBooleanBoolTestCase.test_bool   sQ  € Ü Ó"ˆØ—.‘. Ó% w§~¡~°cÓ':¸G¿N¹NÈ3Ó<Oˆaˆ1ˆØ�1‰u�q‰yˆØ×Ñœ)¤T¨4¯9©9°a¸¿¹Ð5FÓ+GÔHØ×Ñœ)¤T¨4¯9©9°a¸¿¹Ð5FÓ+GÔHØ×Ñœ)¤T¨4¯9©9°a¸¿¹Ð5FÓ+GÔHØ×Ñœ)¤T¨4¯9©9°a¸¿¹ÀqÈ'Ï,É,Ð5WÓ+XÔYØ—‘˜A˜wŸ|™|Ð,°t�Ó<ˆØ—‘Ó"ˆØ˜Ÿ™Ò%Ð%Ð%à—‘˜A˜wŸ|™|¨Q°·±Ð=È�ÓMˆØ—‘Ó"ˆØ˜Ÿ™Ò%Ð%Ñ%r   N)r$   r%   r&   rÙ  r'   r   r   r×  r×  ÿ  s   „ ó&r   r×  c                   ó   — e Zd Zd„ Zy)ÚCustomSymbolTestCasec                 óŒ   ‡—  G ˆfd„dt         «      Š	  ‰dd¬«       y # t        $ r}| j                  |«       Y d }~y d }~ww xY w)Nc                   ó$   •‡ — e Zd Zdˆˆ fd„	Zˆ xZS )ú=CustomSymbolTestCase.test_custom_symbol.<locals>.CustomSymbolc                 ó2   •— || _         t        ‰| �  |«       y rx   )ÚvarrE   rF   )r   ÚnameÚvaluerA   rH   s      €€r   rF   zFCustomSymbolTestCase.test_custom_symbol.<locals>.CustomSymbol.__init__  s   ø€ Ø �”Ü�l DÑ2°4Õ8r   ©râ  )r$   r%   r&   rF   rZ   )rH   rA   s   @€r   rA   rÞ    s   ù„ ÷9ò 9r   rA   r,   z	This is Arã  )r   r‰   r­   )r   r  rA   s     @r   Útest_custom_symbolz'CustomSymbolTestCase.test_custom_symbol  s;   ø€ ö	9œ6ô 	9ð
	Ù˜ KÖ0øÜò 	Ø�I‰I�a�L‰Lûð	ús   ”
 Ÿ	A¨>¾AN)r$   r%   r&   rä  r'   r   r   rÛ  rÛ    s   „ ó	r   rÛ  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚCallabilityTestCasec                 ó”   — t        «       }|j                  d«      }dD ](  }dD ]!  }dD ]  } ||||¬«      |xr |xr |k(  rŒJ ‚ Œ# Œ* y )Nro  ©TFr´  ©r   r   ©r   r   r¦  r,   r-   r  s         r   Útest_andzCallabilityTestCase.test_and  sj   € Ü Ó"ˆØ�m‰m˜GÓ$ˆØò 	AˆAØ"ò A�Ø&ò A�AÙ  a¨1Ô-°!²-¸²-¸aÓ@Ð@Ð@ñAñAñ	Ar   c                 ó”   — t        «       }|j                  d«      }dD ](  }dD ]!  }dD ]  } ||||¬«      |xs |xs |k(  rŒJ ‚ Œ# Œ* y )NrŽ  rè  r´  ré  rê  s         r   Útest_orzCallabilityTestCase.test_or'  sd   € Ü Ó"ˆØ�m‰m˜GÓ$ˆØò 	?ˆAØ"ò ?�Ø&ò ?�AÙ  a¨1Ô-°!²+°q²+¸AÓ>Ð>Ð>ñ?ñ?ñ	?r   c                 óf   — t        «       }|j                  d«      }dD ]  } ||¬«      | k(  rŒJ ‚ y )Nz!arè  ©r,   ré  ©r   r   r¦  r,   s       r   Útest_notzCallabilityTestCase.test_not/  s;   € Ü Ó"ˆØ�m‰m˜DÓ!ˆØò 	'ˆAÙ˜”8 A Ó&Ð&Ð&ñ	'r   c                 ód   — t        «       }|j                  d«      }dD ]  } ||¬«      |k(  rŒJ ‚ y )Nr,   rè  rï  ré  rð  s       r   Útest_symbolzCallabilityTestCase.test_symbol5  s7   € Ü Ó"ˆØ�m‰m˜CÓ ˆØò 	!ˆAÙ˜”8˜q“=Ð �=ñ	!r   c                 ó    — t        «       }|j                  d«      }dD ].  }dD ]'  }dD ]   } ||||¬«      |xs |xr |xs |  k(  rŒ J ‚ Œ) Œ0 y )Nz!(a|b&(a|!c))rè  r´  ré  rê  s         r   Útest_compositez"CallabilityTestCase.test_composite;  su   € Ü Ó"ˆØ�m‰m˜OÓ,ˆØò 	QˆAØ"ò Q�Ø&ò Q�AÙ  a¨1Ô-°qÒ7N¸AÒ<NÀ1Â:ÈAÈÐ2OÓPÐPÐPñQñQñ	Qr   c                 ó~   — t        «       }|j                  d«      }dD ]  }dD ]  } |||¬«      |xs | k(  rŒJ ‚ Œ y )Nz!(a|b)rè  )r,   r-   ré  )r   r   r¦  r,   r-   s        r   Útest_negate_A_or_Bz&CallabilityTestCase.test_negate_A_or_BC  sP   € Ü Ó"ˆØ�m‰m˜HÓ%ˆØò 	7ˆAØ"ò 7�Ù˜Q !”}¨aªf°1¨Ó6Ð6Ð6ñ7ñ	7r   N)	r$   r%   r&   rë  rí  rñ  ró  rõ  r÷  r'   r   r   ræ  ræ    s"   „ òAò?ò'ò!òQó7r   ræ  ) rd   ÚunittestÚunittest.caser   rÑ  r   r   r   r   r   r	   r
   r   r   r   r   rÕ   r   r   r   r   r   ÚTestCaser   rÑ   ró   r  r3  rƒ  r×  rÛ  ræ  r'   r   r   ú<module>rû     sè   ðñó Ý )÷÷ ÷ ñ ÷õ ôg:˜X×.Ñ.ô g:ôT;.˜(×+Ñ+ô ;.ô|D.�X×&Ñ&ô D.ôN\B�(×#Ñ#ô \Bô~EZ�x×(Ñ(ô EZôPCU�H×%Ñ%ô CUôL&˜(×+Ñ+ô &ô$
˜8×,Ñ,ô 
ô*7˜(×+Ñ+õ *7r   