+
    ‹°³jÇ   ã                   óÔ   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHt ^ RIHt ]R 4       t]RR	 l4       t]RR
 l4       t]RR l4       tR t]R 4       tR tR tR# )zÓ
Known facts in assumptions module.

This module defines the facts between unary predicates in ``get_known_facts()``,
and supports functions to generate the contents in
``sympy.assumptions.ask_generated`` file.
)ÚQ)ÚAppliedPredicate)Úcacheit)ÚSymbol)Úto_cnfÚAndÚNotÚImpliesÚ
EquivalentÚ	Exclusive)Úsatisfiablec                  ó  € \         P                  \         P                  \         P                  ,          \         P                  ,          \         P
                  \         P                  \         P                  ,          \         P                  \         P                  \         P                  ,          \         P                  \         P                  \         P                  ,          \         P                  \         P                  \         P                  ,          \         P                  \         P                  \         P                  ,          \         P                  ,          \         P                  ,          \         P                  ,          \         P                  \         P                  \         P                  ,          \         P                  \         P                  \         P                  ,          \         P                   \         P                  \         P                  ,          \         P                  ,          \         P                  ,          \         P"                  \         P                  \         P                  ,          \         P                  ,          \         P$                  \         P                  \         P                  ,          \         P                  ,          \         P&                  \         P(                  \         P*                  ,          /# ©N)r   ÚrealÚnegativeÚzeroÚpositiveÚintegerÚevenÚoddÚnonpositiveÚnonzeroÚnonnegativeÚextended_realÚnegative_infiniteÚpositive_infiniteÚextended_positiveÚextended_negativeÚextended_nonzeroÚextended_nonpositiveÚextended_nonnegativeÚcomplexÚ	algebraicÚtranscendental© ó    ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/assumptions/facts.pyÚget_composite_predicatesr'      sz  € ô
 	
�‰”—‘œaŸf™fÕ$¤q§z¡zÕ1Ü	�	‰	”A—F‘FœQŸU™U•NÜ	�‰œŸ
™
¤Q§V¡VÕ+Ü	�	‰	”A—J‘J¤§¡Õ+Ü	�‰œŸ™¤§¡Õ+Ü	�‰œ!×-Ñ-´·
±
Õ:¼Q¿V¹VÕCÄaÇjÁjÕPÔST×SfÑSfÕfÜ	×ÑœQŸZ™Z¬!×*=Ñ*=Õ=Ü	×ÑœQŸZ™Z¬!×*=Ñ*=Õ=Ü	×ÑœA×/Ñ/´!·*±*Õ<¼q¿z¹zÕIÌA×L_ÑL_Õ_Ü	×Ñ¤× 3Ñ 3´a·j±jÕ @Ä1Ç6Á6Õ IÜ	×Ñ¤§¡¬¯©Õ 3´a×6IÑ6IÕ IÜ	�	‰	”A—K‘K¤!×"2Ñ"2Õ2ðð r%   Nc                ó`   € V f   \        R4      p \        \        V 4      \        V 4      4      pV# )zÓ
Facts between unary predicates.

Parameters
==========

x : Symbol, optional
    Placeholder symbol for unary facts. Default is ``Symbol('x')``.

Returns
=======

fact : Known facts in conjugated normal form.

Úx)r   r   Úget_number_factsÚget_matrix_facts©r)   Úfacts   & r&   Úget_known_factsr.   &   s3   € ð" 	‚yÜ�3‹KˆäÜ˜ÓÜ˜Óó€Dð €Kr%   c                ó–
  € V f   \        R4      p \        \        \        P                  ! V 4      \        P
                  ! V 4      \        P                  ! V 4      \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      ,          \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                   ! V 4      \        P"                  ! V 4      ,          4      \        \        P"                  ! V 4      \        P                   ! V 4      4      \        \        P                   ! V 4      \        P                  ! V 4      4      \        \        P$                  ! V 4      \        P&                  ! V 4      4      \        \        P(                  ! V 4      \        P                   ! V 4      4      \        \        P                  ! V 4      \        P$                  ! V 4      4      \        \        P*                  ! V 4      \        P,                  ! V 4      4      \        \        P*                  ! V 4      \        P,                  ! V 4      ,          \        P(                  ! V 4      \        P                  ! V 4      ,          4      \        \        P$                  ! V 4      \        P                  ! V 4      ,          \        P,                  ! V 4      ( ,          \        P*                  ! V 4      4      \        \        P                  ! V 4      \        P.                  ! V 4      4      \        \        P                  ! V 4      \        P0                  ! V 4      4      \        \        P                  ! V 4      \        P.                  ! V 4      \        P0                  ! V 4      ,          4      \        \        P2                  ! V 4      \        P4                  ! V 4      4      \        \        P                  ! V 4      \        P4                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      ,          \        P2                  ! V 4      4      \        \        P4                  ! V 4      \        P2                  ! V 4      ,          \        P6                  ! V 4      4      4      pV# )zÚ
Facts between unary number predicates.

Parameters
==========

x : Symbol, optional
    Placeholder symbol for unary facts. Default is ``Symbol('x')``.

Returns
=======

fact : Known facts in conjugated normal form.

r)   )r   r   r   r   r   r   r   r   r   r   Ú	imaginaryr	   r!   r#   r"   r
   ÚrationalÚ
irrationalr   r   r   Ú	compositeÚprimeÚ	hermitianÚantihermitianÚinfiniteÚfiniteÚcommutativer,   s   & r&   r*   r*   A   sã  € ð" 	‚yÜ�3‹Kˆää”!×%Ò% aÓ(¬!¯*ª*°Q«-¼¿ºÀ»Ü�JŠJ�q‹Mœ1×.Ò.¨qÓ1ó	3ô 	”!—&’&˜“)œQŸ[š[¨›^Ó,Ü”—’�q“	œAŸKšK¨›NÕ*¬A¯IªI°a«LÓ9ô 	”!×"Ò" 1Ó%¤q§{¢{°1£~Ó6Ü”1—6’6˜!“9œaŸjšj¨›m¬a¯lªl¸1«oÕ=Ó>Ü”!—,’,˜q“/¤1§:¢:¨a£=Ó1Ü”—
’
˜1“œqŸ{š{¨1›~Ó.ô 	”!—&’&˜“)œQŸUšU 1›XÓ&Ü”—	’	˜!“œaŸjšj¨›mÓ,Ü”—’�q“	œ1Ÿ6š6 !›9Ó%Ü”!—+’+˜a“.¤!§'¢'¨!£*Ó-Ü”—’˜A“¤§¢¨£Õ+¬Q¯YªY°q«\¼A¿JºJÀq»MÕ-IÓJÜ”—’�q“	œAŸJšJ q›MÕ)¬Q¯WªW°Q«Z¨KÕ7¼¿ºÀQ»ÓHô 	”—’�q“	œ1Ÿ;š; q›>Ó*Ü”—’˜A“¤§¢°Ó 2Ó3Ü”—’�q“	œ1Ÿ;š; q›>¬A¯OªO¸AÓ,>Õ>Ó?ô 	”!—*’*˜Q“-¤§¢¨!£Ó-Ü”—	’	˜!“œaŸhšh q›kÓ*Ü”×#Ò# AÓ&¬×)<Ò)<¸QÓ)?Õ?ÄÇÂÈAÃÓOô 	”—’˜“œaŸjšj¨›mÕ+¬Q¯]ª]¸1Ó-=Ó>óE#€DðH €Kr%   c                ó<
  € V f   \        R4      p \        \        \        P                  ! V 4      \        P
                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      ,          \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P
                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      \        P                  ! V 4      ,          4      \        \        P                  ! V 4      \        P                  ! V 4      ,          \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                   ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P"                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P                  ! V 4      4      \        \        P"                  ! V 4      \        P                  ! V 4      ,          \        P                  ! V 4      4      \%        \        P                  ! V 4      \        P&                  ! V 4      ( 4      \        \        P(                  ! V 4      \        P                  ! V 4      4      \        \        P                  ! V 4      \        P*                  ! V 4      4      4      pV# )zÚ
Facts between unary matrix predicates.

Parameters
==========

x : Symbol, optional
    Placeholder symbol for unary facts. Default is ``Symbol('x')``.

Returns
=======

fact : Known facts in conjugated normal form.

r)   )r   r   r	   r   Ú
orthogonalÚpositive_definiteÚunitaryÚreal_elementsÚnormalÚ
invertibleÚsquareÚdiagonalÚupper_triangularÚlower_triangularÚ
triangularÚ	symmetricÚunit_triangularÚfullrankr
   ÚsingularÚinteger_elementsÚcomplex_elementsr,   s   & r&   r+   r+   |   sÙ  € ð" 	‚yÜ�3‹Kˆää”—’˜Q“¤×!4Ò!4°QÓ!7Ó8Ü”—’˜Q“¤§¢¨1£Ó.Ü”—	’	˜!“œqŸš¨qÓ1Õ1´1·<²<À³?ÓCÜ”—	’	˜!“œaŸhšh q›kÓ*Ü”—	’	˜!“œaŸlšl¨1›oÓ.Ü”—’˜“œQŸXšX a›[Ó)Ü”—
’
˜1“œqŸxšx¨›{Ó+Ü”×#Ò# AÓ&¬¯ª°Q«Ó8Ü”—
’
˜1“œq×1Ò1°!Ó4Ó5Ü”—
’
˜1“œq×1Ò1°!Ó4Ó5Ü”×"Ò" 1Ó%¤q§|¢|°A£Ó7Ü”×"Ò" 1Ó%¤q§|¢|°A£Ó7Ü”—’˜Q“¤×!3Ò!3°AÓ!6¼×9KÒ9KÈAÓ9NÕ!NÓOÜ”×"Ò" 1Ó%¬×(:Ò(:¸1Ó(=Õ=¼q¿zºzÈ!»}ÓMÜ”—
’
˜1“œqŸ{š{¨1›~Ó.Ü”×!Ò! !Ó$¤a§l¢l°1£oÓ6Ü”—’˜Q“¤§¢¨A£Ó/Ü”—’˜Q“¤§¢¨!£Ó-Ü”—’˜A“¤§¢¨£Ó,Ü”—
’
˜1“¤§¢¨£Õ+¬Q¯\ª\¸!«_Ó=Ü”1—<’< “?¤Q§Z¢Z°£] NÓ3Ü”×"Ò" 1Ó%¤q§¢°qÓ'9Ó:Ü”—’ Ó"¤A×$6Ò$6°qÓ$9Ó:ó1€Dð4 €Kr%   c                ó²  € \        V4      p\        W4      p/ pVP                  4        Fª  w  rV\        4       p\        4       pV F|  p	\	        V	\
        4      '       d   VP                  V	P                  4       K6  \	        V	\        4      '       g   KN  V	P                  ^ ,          p
VP                  V
P                  4       K~  	  Wx3WEP                  &   K¬  	  V# )a£  
Computes and returns a dictionary which contains the relations between
unary predicates.

Each key is a predicate, and item is two groups of predicates.
First group contains the predicates which are implied by the key, and
second group contains the predicates which are rejected by the key.

All predicates in *keys* and *fact* must be unary and have same placeholder
symbol.

Parameters
==========

keys : list of AppliedPredicate instances.

fact : Fact between predicates in conjugated normal form.

Examples
========

>>> from sympy import Q, And, Implies
>>> from sympy.assumptions.facts import generate_known_facts_dict
>>> from sympy.abc import x
>>> keys = [Q.even(x), Q.odd(x), Q.zero(x)]
>>> fact = And(Implies(Q.even(x), ~Q.odd(x)),
...     Implies(Q.zero(x), Q.even(x)))
>>> generate_known_facts_dict(keys, fact)
{Q.even: ({Q.even}, {Q.odd}),
 Q.odd: ({Q.odd}, {Q.even, Q.zero}),
 Q.zero: ({Q.even, Q.zero}, {Q.odd})}
)
r   Úsingle_fact_lookupÚitemsÚsetÚ
isinstancer   ÚaddÚfunctionr   Úargs)Úkeysr-   Úfact_cnfÚmappingÚretÚkeyÚvalueÚimpliedÚrejectedÚexprÚpreds   &&         r&   Úgenerate_known_facts_dictr^   ®   s§   € ôB �d‹|€HÜ  Ó0€Gà
€CØ—m‘m–o‰
ˆÜ“%ˆÜ“5ˆÛˆDÜ˜$Ô 0×1Ò1Ø—‘˜DŸM™MÖ*Ü˜D¤#×&Ô&Ø—y‘y •|�Ø—‘˜TŸ]™]Ö+ñ ð %Ð/ˆ�L‰LÓñ &ð €Jr%   c                 óˆ  € \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  0p . p\         P                  P                   FE  pVP                  R4      '       d   K  \        \         V4      pW09   d   K4  VP                  V4       KG  	  V# )z„
Return every unary predicates registered to ``Q``.

This function is used to generate the keys for
``generate_known_facts_dict``.

Ú__)r   ÚeqÚneÚgtÚltÚgeÚleÚ	__class__Ú__dict__Ú
startswithÚgetattrÚappend)ÚexcludeÚresultÚattrr]   s       r&   Úget_known_facts_keysro   à   s€   € ô �t‰t”Q—T‘Tœ1Ÿ4™4¤§¡¤q§t¡t¬Q¯T©TÐ2€Gà€FÜ—‘×$Ô$ˆØ�?‰?˜4× Ò ÙÜ”q˜$ÓˆØŒ?ÙØ�‰�dÖñ %ð €Mr%   c                 óô   € / pV  Fo  pV0W#&   V  Fa  pWC8w  g   K  \        WCV4      '       d   W#,          P                  V4       \        V( W14      '       g   KI  W#,          P                  V( 4       Kc  	  Kq  	  V# r   )Úask_full_inferencerQ   )Úknown_facts_keysÚknown_facts_cnfrV   rX   Ú	other_keys   &&   r&   rM   rM   ÷   so   € à€GÛˆØ�uˆ‰Û)ˆIØÖÜ% i°o×FÒFØ•L×$Ñ$ YÔ/Ü% y j°#×GÔGØ•L×$Ñ$ i ZÖ0ó *ñ  ð €Nr%   c           	     óŒ   € \        \        W!V 4      4      '       g   R# \        \        W!\        V 4      4      4      '       g   R# R# )z1
Method for inferring properties about objects.

FTN)r   r   r   )ÚpropositionÚassumptionsrs   s   &&&r&   rq   rq     s6   € ô
 ”s˜?¸ÓE×FÒFÙÜ”s˜?¼¸[Ó9IÓJ×KÒKÙÙr%   r   )Ú__doc__Úsympy.assumptions.askr   Úsympy.assumptions.assumer   Úsympy.core.cacher   Úsympy.core.symbolr   Úsympy.logic.boolalgr   r   r   r	   r
   r   Úsympy.logic.inferencer   r'   r.   r*   r+   r^   ro   rM   rq   r$   r%   r&   Ú<module>r      s›   ðñõ $Ý 5Ý $Ý $÷÷ å -ð 	ñó 	ðð& 	óó 	ðð4 	ó7ó 	ð7ðt 	ó-ó 	ð-òb/ðd 	ñó 	ðò,ô	r%   