+
    ‹°³jÝ0  ã                   ó  € R t ^ RIHtHtHt ^ RIHtHt ^ RIH	t	H
t
HtHtHtHt ^ RIHt ^ RIHtHtHtHt ^ RIHtHtHtHtHtHt  ! R R4      t ! R	 R
4      t ! R R4      tRR ltR t  ! R R4      t! ! R R4      t"R# )a  
The classes used here are for the internal use of assumptions system
only and should not be used anywhere else as these do not possess the
signatures common to SymPy objects. For general use of logic constructs
please refer to sympy.logic classes And, Or, Not, etc.
)ÚcombinationsÚproductÚzip_longest)ÚAppliedPredicateÚ	Predicate)ÚEqÚNeÚGtÚLtÚGeÚLe)ÚS)ÚOrÚAndÚNotÚXnor)Ú
EquivalentÚITEÚImpliesÚNandÚNorÚXorc                   ól   a a€ ] tR t^t oRtR
V 3R llt]R 4       tR tR t	R t
]
tR tR tR	tVtV ;t# )ÚLiterala?  
The smallest element of a CNF object.

Parameters
==========

lit : Boolean expression

is_Not : bool

Examples
========

>>> from sympy import Q
>>> from sympy.assumptions.cnf import Literal
>>> from sympy.abc import x
>>> Literal(Q.even(x))
Literal(Q.even(x), False)
>>> Literal(~Q.even(x))
Literal(Q.even(x), True)
c                óò   <€ \        V\        4      '       d   VP                  ^ ,          pRpM.\        V\        \        \
        34      '       d   V'       d   V( # T# \        SV `  V 4      pWn        W#n	        V# )é    T)
Ú
isinstancer   ÚargsÚANDÚORr   ÚsuperÚ__new__ÚlitÚis_Not)Úclsr"   r#   ÚobjÚ	__class__s   &&& €ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/assumptions/cnf.pyr!   ÚLiteral.__new__&   sb   ø€ Ü�cœ3×ÒØ—(‘(˜1•+ˆCØ‰FÜ˜œc¤2¤wÐ/×0Ò0ß!�C�4Ð* sÐ*Ü‰g‰o˜cÓ"ˆØŒØŒ
Øˆ
ó    c                ó   € V P                   # ©N)r"   ©Úselfs   &r'   ÚargÚLiteral.arg1   s   € à�x‰xˆr)   c                óÈ   € \        V P                  4      '       d   V P                  V4      pMV P                  P                  V4      p\        V 4      ! W P                  4      # r+   )Úcallabler"   ÚapplyÚtyper#   )r-   Úexprr"   s   && r'   ÚrcallÚLiteral.rcall5   sC   € Ü�D—H‘H×ÒØ—(‘(˜4“.‰Cà—(‘(—.‘. Ó&ˆCÜ�DŒz˜#Ÿ{™{Ó+Ð+r)   c                óP   € V P                   '       * p\        V P                  V4      # r+   )r#   r   r"   )r-   r#   s   & r'   Ú
__invert__ÚLiteral.__invert__<   s   € Ø—[‘[”ˆÜ�t—x‘x Ó(Ð(r)   c                óv   € R P                  \        V 4      P                  V P                  V P                  4      # )z
{}({}, {}))Úformatr3   Ú__name__r"   r#   r,   s   &r'   Ú__str__ÚLiteral.__str__@   s)   € Ø×"Ñ"¤4¨£:×#6Ñ#6¸¿¹À$Ç+Á+ÓNÐNr)   c                óv   € V P                   VP                   8H  ;'       d    V P                  VP                  8H  # r+   )r.   r#   ©r-   Úothers   &&r'   Ú__eq__ÚLiteral.__eq__E   s*   € Ø�x‰x˜5Ÿ9™9Ñ$×DÐD¨¯©¸¿¹Ñ)DÐDr)   c                óp   € \        \        V 4      P                  V P                  V P                  34      pV# r+   )Úhashr3   r<   r.   r#   )r-   Úhs   & r'   Ú__hash__ÚLiteral.__hash__H   s*   € Ü”$�t“*×%Ñ% t§x¡x°·±Ð=Ó>ˆØˆr)   © )F)r<   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r!   Úpropertyr.   r5   r8   r=   Ú__repr__rB   rG   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r&   Ú__classdict__s   @@r'   r   r      sJ   ù‡ € ñ÷,	ð ñó ðò,ò)òOð €HòE÷ò r)   r   c                   ó\   a € ] tR t^Mt o RtR t]R 4       tR tR t	R t
R tR t]tR	tV tR
# )r   z#
A low-level implementation for Or
c                ó   € Wn         R # r+   ©Ú_args©r-   r   s   &*r'   Ú__init__ÚOR.__init__Q   ó   € ØŽ
r)   c                ó8   € \        V P                  \        R 7      # ©)Úkey©ÚsortedrW   Ústrr,   s   &r'   r   ÚOR.argsT   ó   € ä�d—j‘j¤cÔ*Ð*r)   c                ó|   € \        V 4      ! V P                   Uu. uF  pVP                  V4      NK  	  up!  # u upi r+   ©r3   rW   r5   ©r-   r4   r.   s   && r'   r5   ÚOR.rcallX   ó?   € Ü�DŒzØ'+§z¢zóÙ'1 ð  ŸI™I džOÙ'1ññ ð 	ùò ó   š9c                óR   € \        V P                   Uu. uF  q( NK  	  up!  # u upi r+   )r   rW   ©r-   r.   s   & r'   r8   ÚOR.__invert__]   s#   € Ü T§Z¢ZÓ0¡Z˜c“T¡ZÑ0Ñ1Ð1ùÒ0ó   ”$c                ót   € \        \        V 4      P                  3\        V P                  4      ,           4      # r+   ©rE   r3   r<   Útupler   r,   s   &r'   rG   ÚOR.__hash__`   ó(   € Ü”T˜$“Z×(Ñ(Ð*¬U°4·9±9Ó-=Õ=Ó>Ð>r)   c                ó4   € V P                   VP                   8H  # r+   ©r   r@   s   &&r'   rB   Ú	OR.__eq__c   ó   € Ø�y‰y˜EŸJ™JÑ&Ð&r)   c           	     ó”   € R RP                  V P                   Uu. uF  p\        V4      NK  	  up4      ,           R,           pV# u upi )Ú(ú | Ú)©Újoinr   ra   ©r-   r.   Úss   &  r'   r=   Ú
OR.__str__f   s;   € Ø�%—*‘*°$·)²)Ó<±)¨3œc #žh±)Ñ<Ó=Õ=ÀÕCˆØˆùò =ó   ›A
rV   N)r<   rJ   rK   rL   rM   rY   rN   r   r5   r8   rG   rB   r=   rO   rP   rQ   ©rS   s   @r'   r   r   M   sC   ø‡ € ñòð ñ+ó ð+òò
2ò?ò'òð †Hr)   r   c                   ó\   a € ] tR t^mt o RtR tR t]R 4       tR t	R t
R tR t]tR	tV tR
# )r   z$
A low-level implementation for And
c                ó   € Wn         R # r+   rV   rX   s   &*r'   rY   ÚAND.__init__q   r[   r)   c                óR   € \        V P                   Uu. uF  q( NK  	  up!  # u upi r+   )r   rW   rk   s   & r'   r8   ÚAND.__invert__t   s#   € Ü D§J¢JÓ/¡J˜S“D¡JÑ/Ñ0Ð0ùÒ/rm   c                ó8   € \        V P                  \        R 7      # r]   r_   r,   s   &r'   r   ÚAND.argsw   rc   r)   c                ó|   € \        V 4      ! V P                   Uu. uF  pVP                  V4      NK  	  up!  # u upi r+   re   rf   s   && r'   r5   Ú	AND.rcall{   rh   ri   c                ót   € \        \        V 4      P                  3\        V P                  4      ,           4      # r+   ro   r,   s   &r'   rG   ÚAND.__hash__€   rr   r)   c                ó4   € V P                   VP                   8H  # r+   rt   r@   s   &&r'   rB   Ú
AND.__eq__ƒ   rv   r)   c           	     ó”   € R RP                  V P                   Uu. uF  p\        V4      NK  	  up4      ,           R,           pV# u upi )rx   ú & rz   r{   r}   s   &  r'   r=   ÚAND.__str__†   s;   € Ø�—
‘
°·	²	Ó:±	¨œC žH±	Ñ:Ó;Õ;¸CÕ?ˆØˆùò ;r€   rV   N)r<   rJ   rK   rL   rM   rY   r8   rN   r   r5   rG   rB   r=   rO   rP   rQ   r�   s   @r'   r   r   m   sC   ø‡ € ñòò1ð ñ+ó ð+òò
?ò'òð †Hr)   r   Nc                ó^  € ^ RI Hp Vf   / p\        VP                  \        VP
                  \        VP                  \        VP                  \        VP                  \        VP                  /p\        V 4      V9   d#   V\        V 4      ,          pV! V P                  !  p \!        V \"        4      '       d"   V P                  ^ ,          p\%        WQ4      pV( # \!        V \&        4      '       d7   \)        \&        P*                  ! V 4       Uu. uF  p\%        Wq4      NK  	  up!  # \!        V \,        4      '       d7   \/        \,        P*                  ! V 4       Uu. uF  p\%        Wq4      NK  	  up!  # \!        V \0        4      '       d0   \/        V P                   Uu. uF  p\%        Wq4      NK  	  up!  pV( # \!        V \2        4      '       d0   \)        V P                   Uu. uF  p\%        Wq4      NK  	  up!  pV( # \!        V \4        4      '       d¥   . p\7        ^ \9        V P                  4      ^,           ^4       Fn  p	\;        V P                  V	4       FQ  p
V P                   Uu. uF   pWº9   d   \%        W±4      ( M
\%        W±4      NK"  	  ppVP=                  \)        V!  4       KS  	  Kp  	  \/        V!  # \!        V \>        4      '       d¦   . p\7        ^ \9        V P                  4      ^,           ^4       Fn  p	\;        V P                  V	4       FQ  p
V P                   Uu. uF   pWº9   d   \%        W±4      ( M
\%        W±4      NK"  	  ppVP=                  \)        V!  4       KS  	  Kp  	  \/        V!  ( # \!        V \@        4      '       dG   \%        V P                  ^ ,          V4      \%        V P                  ^,          V4      rí\)        V( V4      # \!        V \B        4      '       dƒ   . p\E        V P                  V P                  R,          V P                  ^ ,          R7       F9  w  pp\%        Wñ4      p\%        VV4      pVP=                  \)        V( V4      4       K;  	  \/        V!  # \!        V \F        4      '       dx   \%        V P                  ^ ,          V4      p\%        V P                  ^,          V4      p\%        V P                  ^,          V4      p\/        \)        V( V4      \)        WÞ4      4      # \!        V \H        4      '       dI   V PJ                  V PL                  ppVPO                  VR4      pVe   \%        VPP                  ! V!  V4      # \!        V \R        4      '       d#   VPO                  V R4      pVe   \%        VV4      # \U        V 4      # u upi u upi u upi u upi u upi u upi )a6  
Generates the Negation Normal Form of any boolean expression in terms
of AND, OR, and Literal objects.

Examples
========

>>> from sympy import Q, Eq
>>> from sympy.assumptions.cnf import to_NNF
>>> from sympy.abc import x, y
>>> expr = Q.even(x) & ~Q.positive(x)
>>> to_NNF(expr)
(Literal(Q.even(x), False) & Literal(Q.positive(x), True))

Supported boolean objects are converted to corresponding predicates.

>>> to_NNF(Eq(x, y))
Literal(Q.eq(x, y), False)

If ``composite_map`` argument is given, ``to_NNF`` decomposes the
specified predicate into a combination of primitive predicates.

>>> cmap = {Q.nonpositive: Q.negative | Q.zero}
>>> to_NNF(Q.nonpositive, cmap)
(Literal(Q.negative, False) | Literal(Q.zero, False))
>>> to_NNF(Q.nonpositive(x), cmap)
(Literal(Q.negative(x), False) | Literal(Q.zero(x), False))
)ÚQNºé   NN)Ú	fillvalue)+Úsympy.assumptions.askr“   r   Úeqr   Úner	   Úgtr
   Últr   Úger   Úler3   r   r   r   Úto_NNFr   r   Ú	make_argsr   r   r   r   r   ÚrangeÚlenr   Úappendr   r   r   r   r   r   ÚfunctionÚ	argumentsÚgetr5   r   r   )r4   Úcomposite_mapr“   ÚbinrelpredsÚpredr.   ÚtmpÚxÚcnfsÚiÚnegr~   ÚclauseÚLÚRÚaÚbÚMr   Únewpreds   &&                  r'   rž   rž   �   su  € õ: (àÒØˆô �q—t‘tœR §¡¤r¨1¯4©4´°Q·T±T¼2¸q¿t¹tÄRÈÏÉÐN€KÜˆDƒz�[Ô Øœ4 ›:Õ&ˆÙ�T—Y‘YÑˆä�$œ×ÒØ�i‰i˜�lˆÜ�SÓ(ˆØˆtˆä�$œ×ÒÜ´b·l²lÀ4Ô6HÓIÑ6H°”F˜1Ö,Ñ6HÑIÑJÐJä�$œ×ÒÜ´s·}²}ÀTÔ7JÓKÑ7J°!”V˜AÖ-Ñ7JÑKÑLÐLä�$œ×ÒÜ°d·i²iÓ@±i°”F˜1Ö,±iÑ@ÑAˆØˆtˆä�$œ×ÒÜ°T·Y²YÓ?±Y°”6˜!Ö+±YÑ?Ñ@ˆØˆtˆä�$œ×ÒØˆÜ�qœ#˜dŸi™i›.¨1Õ,¨aÖ0ˆAÜ# D§I¡I¨qÖ1�à#'§9¢9ó.Ù#,˜að 89´xœ6 !Ó3Ñ3ÄVÈAÓE]Ò]Ù#,ð ð .à—‘œB ™KÖ(ó 2ñ 1ô
 �D‰zÐä�$œ×ÒØˆÜ�qœ#˜dŸi™i›.¨1Õ,¨aÖ0ˆAÜ# D§I¡I¨qÖ1�à#'§9¢9ó.Ù#,˜að 89´xœ6 !Ó3Ñ3ÄVÈAÓE]Ò]Ù#,ð ð .à—‘œB ™KÖ(ó 2ñ 1ô
 �T‘
ˆ{Ðä�$œ× Ò Ü�d—i‘i •l MÓ2´F¸4¿9¹9ÀQ½<ÈÓ4Wˆ1Ü�1�"�a‹yÐä�$œ
×#Ò#ØˆÜ §	¡	¨4¯9©9°R­=ÀDÇIÁIÈaÅL×Q‰DˆAˆqÜ�qÓ(ˆAÜ�q˜-Ó(ˆAØ�K‰Kœ˜A˜2˜q›	Ö"ñ Rô �D‰zÐä�$œ×ÒÜ�4—9‘9˜Q•< Ó/ˆÜ�4—9‘9˜Q•< Ó/ˆÜ�4—9‘9˜Q•< Ó/ˆÜ”2�q�b˜!“9œb ›hÓ'Ð'ä�$Ô(×)Ò)Ø—]‘] D§N¡NˆdˆØ×#Ñ# D¨$Ó/ˆØÒÜ˜'Ÿ-š-¨Ñ.°Ó>Ð>ä�$œ	×"Ò"Ø×#Ñ# D¨$Ó/ˆØÒÜ˜' =Ó1Ð1ä�4‹=Ðùòy Jùò Lùò Aùò @ùò.ùò.s$   ÄVÅVÆVÇV É#&V%Ì&V*c                óæ  € \        V \        \        34      '       g1   \        4       pVP	                  \        V 34      4       \        V4      # \        V \        4      '       d8   \        P                  ! V P                   Uu. uF  p\        V4      NK  	  up!  # \        V \        4      '       d8   \        P                  ! V P                   Uu. uF  p\        V4      NK  	  up!  # R# u upi u upi )z|
Distributes AND over OR in the NNF expression.
Returns the result( Conjunctive Normal Form of expression)
as a CNF object.
N)r   r   r   ÚsetÚaddÚ	frozensetÚCNFÚall_orrW   Údistribute_AND_over_ORÚall_and)r4   r©   r.   s   &  r'   r»   r»   ú   sÍ   € ô �dœS¤"˜I×&Ò&Ü‹eˆØ�‰”	˜4˜'Ó"Ô#Ü�3‹xˆä�$œ×ÒÜ�zŠzØ'+§z¢zó3Ù'1 ô 3°3Ö7Ù'1ñ3ñ 4ð 	4ô �$œ×ÒÜ�{Š{Ø(,¯
ª
ó4Ù(2 ô 4°CÖ8Ù(2ñ4ñ 5ð 	5ñ ùò3ùò4s   ÂC)ÃC.c                   óÀ   a € ] tR tRt o RtRR ltR tR tR tR t	R	 t
]R
 4       tR tR tR tR tR tR t]R 4       t]R 4       t]R 4       t]R 4       tRtV tR# )r¹   i  aÊ  
Class to represent CNF of a Boolean expression.
Consists of set of clauses, which themselves are stored as
frozenset of Literal objects.

Examples
========

>>> from sympy import Q
>>> from sympy.assumptions.cnf import CNF
>>> from sympy.abc import x
>>> cnf = CNF.from_prop(Q.real(x) & ~Q.zero(x))
>>> cnf.clauses
{frozenset({Literal(Q.zero(x), True)}),
frozenset({Literal(Q.negative(x), False),
Literal(Q.positive(x), False), Literal(Q.zero(x), False)})}
Nc                ó6   € V'       g   \        4       pWn        R # r+   )r¶   Úclauses©r-   r¿   s   &&r'   rY   ÚCNF.__init__   s   € ßÜ“eˆGØŽr)   c                óf   € \         P                  V4      P                  pV P                  V4       R # r+   )r¹   Úto_CNFr¿   Úadd_clauses)r-   Úpropr¿   s   && r'   r·   ÚCNF.add%  s$   € Ü—*‘*˜TÓ"×*Ñ*ˆØ×Ñ˜Ö!r)   c                óâ   € R P                  V P                   UUu. uF;  pRRP                  V Uu. uF  p\        V4      NK  	  up4      ,           R,           NK=  	  upp4      pV# u upi u uppi )r�   rx   ry   rz   )r|   r¿   ra   )r-   r®   r"   r~   s   &   r'   r=   ÚCNF.__str__)  si   € Ø�J‰JàŸ,š,ô(Ù&�ð �5—:‘:±6Ó:±6¨Cœs 3žx±6Ñ:Ó;Õ;¸S×@Ð@Ù&ò(ó
ˆð ˆùò ;ùó (s   ›A+
°A&ÁA+
Á&A+
c                ó:   € V F  pV P                  V4       K  	  V # r+   ©r·   )r-   ÚpropsÚps   && r'   ÚextendÚ
CNF.extend0  s   € ÛˆAØ�H‰H�QŽKñ àˆr)   c                ó>   € \        \        V P                  4      4      # r+   )r¹   r¶   r¿   r,   s   &r'   ÚcopyÚCNF.copy5  s   € Ü”3�t—|‘|Ó$Ó%Ð%r)   c                ó8   € V ;P                   V,          un         R # r+   ©r¿   rÀ   s   &&r'   rÄ   ÚCNF.add_clauses8  s   € Ø�Š˜Õ�r)   c                ó6   € V ! 4       pVP                  V4       V# r+   rÊ   )r$   rÅ   Úress   && r'   Ú	from_propÚCNF.from_prop;  s   € á‹eˆØ�‰�ŒØˆ
r)   c                ó<   € V P                  VP                  4       V # r+   )rÄ   r¿   r@   s   &&r'   Ú__iand__ÚCNF.__iand__A  s   € Ø×Ñ˜Ÿ™Ô'Øˆr)   c                óŒ   € \        4       pV P                   F$  pY Uu0 uF  q3P                  kK  	  up,          pK&  	  V# u upi r+   )r¶   r¿   r"   )r-   Ú
predicatesÚcr.   s   &   r'   Úall_predicatesÚCNF.all_predicatesE  s=   € Ü“Uˆ
Ø—”ˆAØ¨aÓ0©a sŸ7œ7©aÑ0Õ0ŠJñ àÐùò 1s   žAc                óê   € \        4       p\        V P                  VP                  4       F;  w  r4\        V4      pVP                  V4       VP	                  \        V4      4       K=  	  \        V4      # r+   )r¶   r   r¿   Úupdater·   r¸   r¹   )r-   Úcnfr¿   r±   r²   r©   s   &&    r'   Ú_orÚCNF._orK  sT   € Ü“%ˆÜ˜DŸL™L¨#¯+©+Ö6‰DˆAÜ�a“&ˆCØ�J‰J�qŒMØ�K‰Kœ	 #›Ö'ñ 7ô �7‹|Ðr)   c                ób   € V P                   P                  VP                   4      p\        V4      # r+   )r¿   Úunionr¹   )r-   rã   r¿   s   && r'   Ú_andÚCNF._andS  s$   € Ø—,‘,×$Ñ$ S§[¡[Ó1ˆÜ�7‹|Ðr)   c                ó$  € \        V P                  4      pVR,           Uu0 uF  p\        V( 34      kK  	  pp\        V4      pVRR  F9  pV Uu0 uF  p\        V( 34      kK  	  ppVP	                  \        V4      4      pK;  	  V# u upi u upi )r•   Néÿÿÿÿ)Úlistr¿   r¸   r¹   rä   )r-   Úclssrª   ÚllÚrestrÌ   s   &     r'   Ú_notÚCNF._notW  s‰   € Ü�D—L‘LÓ!ˆØ(,¨R®Ó1© 1Œi˜!˜˜Ö©ˆÐ1Ü�‹Wˆà˜˜"“IˆDÙ+/Ó0©4 a”˜Q˜B˜5Ö!©4ˆAÐ0Ø—‘œ˜A›“ŠBñ ð ˆ	ùò 2ùò 1s   ¡BÁBc                óÌ   € . pV P                    F:  pV Uu. uF  qDP                  V4      NK  	  ppVP                  \        V!  4       K<  	  \	        V!  p\        V4      # u upi r+   )r¿   r5   r¢   r   r   r»   )r-   r4   Úclause_listr®   r.   Úlitss   &&    r'   r5   Ú	CNF.rcalla  s]   € ØˆØ—l”lˆFÙ/5Ó6©v¨—I‘I˜d–O©vˆDÐ6Ø×Ñœr 4™yÖ)ñ #ô �KÑ ˆÜ% dÓ+Ð+ùò 7s   –A!c                óv   € V^ ,          P                  4       pVR,           F  pVP                  V4      pK  	  V# ©r   r”   )rÐ   rä   ©r$   r«   r²   rï   s   &*  r'   rº   Ú
CNF.all_ori  s3   € à��G�L‰L‹NˆØ˜—H�HˆDØ—‘�d“ŠAñ àˆr)   c                óv   € V^ ,          P                  4       pVR,           F  pVP                  V4      pK  	  V# r÷   )rÐ   rè   rø   s   &*  r'   r¼   ÚCNF.all_andp  s3   € à��G�L‰L‹NˆØ˜—H�HˆDØ—‘�t“ŠAñ àˆr)   c                óH   € ^ RI Hp \        W! 4       4      p\        V4      pV# )r   )Úget_composite_predicates)Úsympy.assumptions.factsrý   rž   r»   )r$   r4   rý   s   && r'   rÃ   Ú
CNF.to_CNFw  s$   € åDÜ�dÐ4Ó6Ó7ˆÜ% dÓ+ˆØˆr)   c                óD   a€ R o\        V3R lVP                   4       !  # )zU
Converts CNF object to SymPy's boolean expression
retaining the form of expression.
c                 óh   € V P                   '       d   \        V P                  4      # V P                  # r+   )r#   r   r"   )r.   s   &r'   Úremove_literalÚ&CNF.CNF_to_cnf.<locals>.remove_literal„  s!   € Ø#&§:§: :”3�s—w‘w“<Ð:°3·7±7Ð:r)   c              3   óJ   <"  € T F  p\        V3R  lV 4       !  x € K  	  R# 5i)c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5ir+   rI   )Ú.0r.   r  s   & €r'   Ú	<genexpr>Ú+CNF.CNF_to_cnf.<locals>.<genexpr>.<genexpr>‡  s   øé € Ð@¹°#™.¨×-Ð-»ùs   ƒN)r   )r  r®   r  s   & €r'   r  Ú!CNF.CNF_to_cnf.<locals>.<genexpr>‡  s   øé € Ð\ÑP[Àf”RÔ@¹Ó@ÖAÓP[ùs   ƒ #)r   r¿   )r$   rã   r  s   &&@r'   Ú
CNF_to_cnfÚCNF.CNF_to_cnf~  s"   ø€ ò	;ô Ô\ÐPS×P[ÒP[Ó\Ñ]Ð]r)   rÓ   r+   )r<   rJ   rK   rL   rM   rY   r·   r=   rÍ   rÐ   rÄ   Úclassmethodr×   rÚ   rß   rä   rè   rð   r5   rº   r¼   rÃ   r
  rP   rQ   r�   s   @r'   r¹   r¹     s¬   ø‡ € ñô"ò
"òòò
&ò ð ñó ðò
òòòòò,ð ñó ðð ñó ðð ñó ðð ñ^ó ö^r)   r¹   c                   ór   a € ] tR tRt o RtRR ltR t]R 4       t]R 4       t	R t
R	 tR
 tR tR tRtV tR# )Ú
EncodedCNFiŠ  z(
Class for encoding the CNF expression.
Nc                ó‚   € V'       g   V'       g   . p/ pWn         W n        \        VP                  4       4      V n        R # r+   )ÚdataÚencodingrì   ÚkeysÚ_symbols)r-   r  r  s   &&&r'   rY   ÚEncodedCNF.__init__Ž  s-   € ßŸHØˆDØˆHØŒ	Ø ŒÜ˜XŸ]™]›_Ó-ˆŽr)   c           
     ó>  € \        VP                  4       4      V n        \        V P                  4      p\	        \        V P                  \        ^V^,           4      4      4      V n        VP                   Uu. uF  q0P                  V4      NK  	  upV n
        R# u upi )r•   N)rì   rß   r  r¡   ÚdictÚzipr    r  r¿   Úencoder  )r-   rã   Únr®   s   &&  r'   Úfrom_cnfÚEncodedCNF.from_cnf–  sj   € Ü˜S×/Ñ/Ó1Ó2ˆŒÜ�—‘ÓˆÜœS §¡´°a¸¸Q½³Ó@ÓAˆŒØ7:·{²{ÓC±{¨V—[‘[ Ö(±{ÑCˆŽ	ùÒCs   Á7Bc                ó   € V P                   # r+   )r  r,   s   &r'   ÚsymbolsÚEncodedCNF.symbolsœ  s   € à�}‰}Ðr)   c                óN   € \        ^\        V P                  4      ^,           4      # )r•   )r    r¡   r  r,   s   &r'   Ú	variablesÚEncodedCNF.variables   s   € ä�Qœ˜DŸM™MÓ*¨QÕ.Ó/Ð/r)   c                ó’   € V P                    Uu. uF  p\        V4      NK  	  pp\        V\        V P                  4      4      # u upi r+   )r  r¶   r  r  r  )r-   r®   Únew_datas   &  r'   rÐ   ÚEncodedCNF.copy¤  s9   € Ø.2¯iªiÓ8©i F”C˜–K©iˆÐ8Ü˜(¤D¨¯©Ó$7Ó8Ð8ùò 9s   �Ac                óR   € \         P                  V4      pV P                  V4       R # r+   )r¹   r×   Úadd_from_cnf)r-   rÅ   rã   s   && r'   Úadd_propÚEncodedCNF.add_prop¨  s   € Ü�m‰m˜DÓ!ˆØ×Ñ˜#Ör)   c                ó”   € VP                    Uu. uF  q P                  V4      NK  	  ppV ;P                  V,          un        R # u upi r+   )r¿   r  r  )r-   rã   r®   r¿   s   &&  r'   r&  ÚEncodedCNF.add_from_cnf¬  s5   € Ø58·[²[ÓA±[¨6—;‘;˜vÖ&±[ˆÐAØ�	Š	�WÕ�	ùò Bs   �Ac                ó  € VP                   pV P                  P                  VR 4      pVfH   \        V P                  4      pV P                  P                  V4       V^,           ;q0P                  V&   VP                  '       d   V) # V# r+   )r"   r  r¥   r¡   r  r¢   r#   )r-   r.   ÚliteralÚvaluer  s   &&   r'   Ú
encode_argÚEncodedCNF.encode_arg°  sp   € Ø—'‘'ˆØ—‘×!Ñ! '¨4Ó0ˆØŠ=Ü�D—M‘MÓ"ˆAØ�M‰M× Ñ  Ô)Ø-.°­UÐ2ˆE—M‘M 'Ñ*Ø�:�:ˆ:Ø�6ˆMàˆLr)   c                óŽ   € V Uu0 uF4  q"P                   \        P                  8X  g   V P                  V4      M^ kK6  	  up# u upi )r   )r"   r   Úfalser.  )r-   r®   r.   s   && r'   r  ÚEncodedCNF.encode¼  s7   € ÙQWÓXÑQWÈ#¯G©G´q·w±wÔ,>�—‘ Ô$ÀAÒEÑQWÑXÐXùÒXs   …:A)r  r  r  )NN)r<   rJ   rK   rL   rM   rY   r  rN   r  r   rÐ   r'  r&  r.  r  rP   rQ   r�   s   @r'   r  r  Š  s]   ø‡ € ñô.òDð ñó ðð ñ0ó ð0ò9òòò
÷Yð Yr)   r  r+   )#rM   Ú	itertoolsr   r   r   Úsympy.assumptions.assumer   r   Úsympy.core.relationalr   r   r	   r
   r   r   Úsympy.core.singletonr   Úsympy.logic.boolalgr   r   r   r   r   r   r   r   r   r   r   r   r   rž   r»   r¹   r  rI   r)   r'   Ú<module>r8     sr   ðñ÷ 9Ñ 8ß @ß 8× 8Ý "ß 2Ó 2ß J× J÷;ñ ;÷|ñ ÷@ñ ô@jòZ5÷(y^ñ y^÷x3Yó 3Yr)   