§
    Ÿ²Åj]‡  ã                   ó\  — d dl Z d dlZd dlZd dl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 d dlZd dlZd dlZd dlmc mZ d dlmZ d dlmZ d dlmZmZ d dlm Z   ej!        e"¦  «        Z#	 d dl$Z$de$j%        d	e&fd
„Z'd„ Z(e G d„ d¦  «        ¦   «         Z)de	ddd	e	fd„Z* G d„ dej        j+        ¦  «        Z, G d„ d¦  «        Z- G d„ d¦  «        Z.dZ/g d¢Z0n# e1$ r	 dZ/g d¢Z0Y nw xY wd dl2m3Z4 d	e5fd„Z6d	e7fd„Z8d„ Z9 G d„ d e¦  «        Z: G d!„ d"e¦  «        Z; e9¦   «          d#„ Z<dS )$é    N)Ú	dataclass)	ÚAnyÚCallableÚDictÚListÚOptionalÚSetÚTupleÚTypeÚUnion)ÚTorchDynamoException)Údynamo_timed)ÚArgumentÚTarget)Úsympy_interpÚeÚreturnc                 ó¼  ‡
‡— t          j        | ¦  «        sJ d| › �¦   «         ‚dt           j        dt          t                   fd„}t          j        | ¦  «        } t          j        | ¦  «        st          d| › �¦  «        ‚t          j        | ¦  «        st          j	        | ¦  «        r|  
                    ¦   «         S |                      ¦   «         }|                     ¦   «         Št	          |¦  «        } || ¦  «        }‰t           j        k    rd}�n™‰t           j        t           j        fv rˆ
ˆfd„Š
 ‰
| ¦  «        }�nl‰t           j        k    r©|                      ¦   «         dk    sJ ‚|                      d	¦  «        }t          j        |¦  «        sJ ‚|                     ¦   «                              ¦   «         }t           j        d
t           j        dt           j        di}||v r||         } ||¦  «        }n³‰t           j        t           j        fv r`|                      ¦   «         dk    sJ ‚t1          |                      d	¦  «        ¦  «        }|                     d¦  «        rd|dd …         z   S |S ‰t           j        k    r)|                      ¦   «         d	k    sJ ‚t	          |¦  «        S |dz   d                     |¦  «        z   }	d|	                     ¦   «         › d�S )Nzunsupported expression type: r   r   c                 ó^   ‡ — ˆ fd„t          ‰                      ¦   «         ¦  «        D ¦   «         S )Nc                 óT   •— g | ]$}t          ‰                     |¦  «        ¦  «        ‘Œ%S © )Úz3strÚarg)Ú.0Úir   s     €úPC:\Projects\Historical\venv\Lib\site-packages\torch/fx/experimental/validator.pyú
<listcomp>z/z3str.<locals>.get_args_str.<locals>.<listcomp>@   s)   ø€ ÐAÐAÐA¨•E˜!Ÿ%š% ™(œ(‘O”OÐAÐAÐAó    )ÚrangeÚnum_args)r   s   `r   Úget_args_strzz3str.<locals>.get_args_str?   s-   ø€ ØAÐAÐAÐA­U°1·:²:±<´<Ñ-@Ô-@ÐAÑAÔAÐAr   zcan't print Z3 expression: Úpowc                 óþ   •‡ — t          j        ‰ ¦  «        r*‰                      ¦   «                              ¦   «         ‰k    st	          ‰ ¦  «        gS ˆˆ fd„t          ‰                      ¦   «         ¦  «        D ¦   «         S )Nc                 óV   •— g | ]%} ‰‰                      |¦  «        ¦  «        D ]}|‘ŒŒ&S r   )r   )r   r   ÚxÚcollect_str_argsr   s      €€r   r   z3z3str.<locals>.collect_str_args.<locals>.<listcomp>^   sU   ø€ ð ð ð àØ!1Ð!1°!·%²%¸±(´(Ñ!;Ô!;ðð ð ð ðð ð ð r   )Úz3Úis_appÚdeclÚkindr   r   r    )r   r&   r*   s   `€€r   r&   zz3str.<locals>.collect_str_argsZ   s|   øø€ Ýœ	 !™œð ¨¯ª©¬¯ª©¬¸DÒ)@Ð)@Ý! !™HœH˜:Ð%ðð ð ð ð å!& q§z¢z¡|¤|Ñ!4Ô!4ðñ ô ð r   é   r   z!=ú>ú<z(/z(idivé   ú ú(ú))r'   Úis_exprÚExprRefr   ÚstrÚsimplifyr(   Ú
ValueErrorÚis_int_valueÚis_rational_valueÚ	as_stringr)   r*   ÚZ3_OP_POWERÚ	Z3_OP_ADDÚ	Z3_OP_MULÚ	Z3_OP_NOTr    r   ÚZ3_OP_EQÚZ3_OP_LEÚZ3_OP_GEÚZ3_OP_TO_INTÚZ3_OP_TO_REALr   Ú
startswithÚZ3_OP_UNINTERPRETEDÚjoinÚrstrip)r   r!   r)   ÚopÚargsr   ÚargkindÚlogic_inverseÚargstrÚstringr&   r*   s             @@r   r   r   <   sÌ  øø€ ÝŒz˜!‰}Œ}ÐAÐAÐA¸aÐAÐAÑAÔAˆ}ð	B�BœJð 	B­4µ¬9ð 	Bð 	Bð 	Bð 	Bõ
 ŒK˜‰NŒNˆõ Œy˜‰|Œ|ð 	@ÝÐ>¸1Ð>Ð>Ñ?Ô?Ð?åŒ?˜1ÑÔð 	!¥Ô!5°aÑ!8Ô!8ð 	!Ø—;’;‘=”=Ð à�vŠv‰xŒxˆØ�yŠy‰{Œ{ˆÝ�‰YŒYˆØˆ|˜A‰Œˆà•2”>Ò!Ð!ØˆB‰Bà•b”l¥B¤LÐ1Ð1Ð1ðð ð ð ð ð ð $Ð# AÑ&Ô&ˆD‰Dà•R”\Ò!Ð!ð —:’:‘<”< 1Ò$Ð$Ð$Ð$Ø—%’%˜‘(”(ˆCå”9˜S‘>”>Ð!Ð!�>Ø—h’h‘j”j—o’oÑ'Ô'ˆGõ ”˜TÝ”˜SÝ”˜SðˆMð ˜-Ð'Ð'Ø" 7Ô+�Ø#�| CÑ(Ô(�øà•b”o¥rÔ'7Ð8Ð8Ð8Ø—:’:‘<”< 1Ò$Ð$Ð$Ð$Ý˜1Ÿ5š5 ™8œ8‘_”_ˆFð × Ò  Ñ&Ô&ð ,Ø ¨¨¨¤Ñ+Ð+ð ˆMà•RÔ+Ò+Ð+Ø—:’:‘<”< 1Ò$Ð$Ð$Ð$Ý�t‘9”9Ðà�c‘˜CŸHšH T™NœNÑ*ˆØ%�6—=’=‘?”?Ð%Ð%Ð%Ð%r   c                 óJ   ‡ ‡— t          j        ‰ ¦  «        ˆ ˆfd„¦   «         }|S )Nc                 ó¤   •— ‰�t          d„ |D ¦   «         ¦  «        r ‰|Ž S t          d„ |D ¦   «         ¦  «        }t          j         ‰|Ž ¦  «        S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S ©N)Ú
isinstancer'   ÚBoolRef)r   r   s     r   ú	<genexpr>z/_bitwise_op.<locals>.wrapper.<locals>.<genexpr>”   s?   è è € ð -ð -Ø03•
˜3¥¤
Ñ+Ô+ð-ð -ð -ð -ð -ð -r   c              3   ó@   K  — | ]}t          j        |d ¦  «        V — ŒdS )é@   N)r'   ÚInt2BV©r   Úas     r   rS   z/_bitwise_op.<locals>.wrapper.<locals>.<genexpr>™   s.   è è € Ð @Ð @°a¥¤¨1¨bÑ!1Ô!1Ð @Ð @Ð @Ð @Ð @Ð @r   )ÚallÚtupler'   ÚBV2Int)ÚselfrH   Úwrapped_argsÚbitwise_funcÚ	bool_funcs      €€r   Úwrapperz_bitwise_op.<locals>.wrapper’   sv   ø€ àÐ$­ð -ð -Ø7;ð-ñ -ô -ñ *ô *Ð$ð !�y $Ð'Ð'å Ð @Ð @¸4Ð @Ñ @Ô @Ñ@Ô@ˆLÝ”9˜\˜\¨<Ð8Ñ9Ô9Ð9r   )Ú	functoolsÚwraps)r^   r_   r`   s   `` r   Ú_bitwise_oprc   ‘   s>   øø€ Ý	Œ˜Ñ	&Ô	&ð	:ð 	:ð 	:ð 	:ð 	:ñ 
'Ô	&ð	:ð ˆr   c                   óF  — e Zd ZU ded<   edej        dej        fd„¦   «         Zedej        dej        fd„¦   «         Zdej        dej        fd„Z	d	ej        d
ej        dej        fd„Z
dej        dej        fd„Zd	ej        d
ej        dej        fd„Zdej        dej        fd„Zdej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        fd„Zdej        dej        fd„Zdej        dej        fd„Z eej        ej        ¦  «        Z eej        ej        ¦  «        Z eej        d¦  «        Z eej        d¦  «        ZdS )Ú_Z3OpsÚTranslationValidatorÚ	validatorr%   r   c                 óV   — |                       ¦   «         r| nt          j        | ¦  «        S rP   )Úis_realr'   ÚToReal©r%   s    r   Úto_realz_Z3Ops.to_real­   s!   € àŸ	š	™œÐ5�1�1­¬°1©¬Ð5r   c                 óV   — |                       ¦   «         r| nt          j        | ¦  «        S rP   )Úis_intr'   ÚToIntrk   s    r   Úto_intz_Z3Ops.to_int²   s!   € àŸš™
œ
Ð3�1�1­¬°©¬Ð3r   rH   c                 ó    — t          |¦  «        S rP   )Úsum)r\   rH   s     r   Úsym_sumz_Z3Ops.sym_sum¶   s   € Ý�t‘9”9Ðr   Ú	numeratorÚdenominatorc                 ó¨   — | j                              |dk    ¦  «         t                               |¦  «        t                               |¦  «        z  S ©Nr   )rg   Úadd_assertionre   rl   ©r\   rt   ru   s      r   Údivz
_Z3Ops.divº   s@   € ØŒN×(Ò(¨¸Ò)9Ñ:Ô:Ð:Ý—>’> )Ñ,Ô,­v¯~ª~¸kÑ/JÔ/JÑJÐJr   Únumberc                 ó6   — t                                |¦  «        S rP   )re   rp   ©r\   r{   s     r   Úfloorz_Z3Ops.floor¾   s   € å—=’= Ñ(Ô(Ð(r   c                 óê   — |                      ¦   «         p|                      ¦   «         }t                               |                      ||¦  «        ¦  «        }|rt                               |¦  «        n|S rP   )ri   re   rp   rz   rl   )r\   rt   ru   Úcast_result_to_realÚresults        r   Úfloordivz_Z3Ops.floordivÄ   se   € ð #,×"3Ò"3Ñ"5Ô"5Ð"N¸×9LÒ9LÑ9NÔ9NÐÝ—]’] 4§8¢8¨I°{Ñ#CÔ#CÑDÔDˆFð .AÐL•6—>’> &Ñ)Ô)Ð)ÀfÐLr   c                 óˆ   — t          j        |                      |¦  «        |k     |                      |dz   ¦  «        |¦  «        S ©Nr+   )r'   ÚIfr~   r}   s     r   Úceilz_Z3Ops.ceilÍ   s>   € Ý”5Ø—
’
˜6Ñ"Ô" VÒ+¨T¯ZªZ¸À¹
Ñ-CÔ-CÀVñô ð r   c                 ó‚   — t          j        |dk    |                      |¦  «        |                      |¦  «        ¦  «        S rw   )r'   r…   r~   r†   r}   s     r   Útruncz_Z3Ops.truncÒ   s2   € Ý”5˜ 1š d§j¢j°Ñ&8Ô&8¸$¿)º)ÀFÑ:KÔ:KÑLÔLÐLr   rX   Úbc                 ó6   — t          j        ||k    ||¦  «        S rP   ©r'   r…   ©r\   rX   r‰   s      r   Úmaxz
_Z3Ops.maxÕ   ó   € Ý”5˜˜Qš  1Ñ%Ô%Ð%r   c                 ó6   — t          j        ||k     ||¦  «        S rP   r‹   rŒ   s      r   Úminz
_Z3Ops.minØ   rŽ   r   ÚpÚqc                 ó:   — ||                       ||¦  «        |z  z
  S rP   )r‚   ©r\   r‘   r’   s      r   Úmodz
_Z3Ops.modÝ   s    € Ø�t—}’} Q¨Ñ*Ô*¨QÑ.Ñ.Ð.r   ÚbaseÚexpc                 óv   — | j                              t          j        |dk    |dk    ¦  «        ¦  «         ||z  S rw   )rg   rx   r'   ÚOr©r\   r–   r—   s      r   r"   z
_Z3Ops.powà   s6   € àŒN×(Ò(­¬¨t°qªy¸#Àº'Ñ)BÔ)BÑCÔCÐCØ˜‘9Ðr   c                 ó|   — t                                |¦  «        }| j                             |dk    ¦  «         |dz  S )Nr   ç      à?)re   rl   rg   rx   r}   s     r   Úsqrtz_Z3Ops.sqrtå   s;   € õ —^’^ FÑ+Ô+ˆFð ŒN×(Ò(¨°1ªÑ5Ô5Ð5Ø˜3‘;Ðr   c                 ó*   — t          j        |¦  «        S rP   )r'   ÚAbsr}   s     r   Úabsz
_Z3Ops.absî   s   € Ý”6˜&‘>”>Ð!r   c                 óÚ   — t          j        |                      |t          j        d¦  «        ¦  «        dk    |                      |dz
  ¦  «        |                      |dz   ¦  «        ¦  «        S )Nr.   rœ   )r'   r…   r•   ÚIntValr†   r~   r}   s     r   Úround_to_intz_Z3Ops.round_to_intñ   s\   € õ ”5Ø—’˜¥¤¨1¡¤Ñ.Ô.°#Ò5Ø—	’	˜& 3™,Ñ'Ô'Ø—
’
˜6 C™<Ñ(Ô(ñô ð r   N) Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ústaticmethodr'   ÚArithRefrl   rp   rs   rz   r~   r‚   r†   rˆ   r�   r�   r•   r"   r�   r    r£   rc   ÚoperatorÚand_ÚAndÚbitwise_andÚor_r™   Ú
bitwise_orÚlshiftÚrshiftr   r   r   re   re   £   s  € € € € € € ð *Ð)Ð)Ñ)ð 
ð	6�r”{ð 	6 r¤{ð 	6ð 	6ð 	6ñ 
Œð	6ð 
ð	4�b”kð 	4 b¤kð 	4ð 	4ð 	4ñ 
Œð	4ð	 ¤ð 	°´ð 	ð 	ð 	ð 	ð	K ¤ð 	K¸2¼;ð 	KÈ2Ì;ð 	Kð 	Kð 	Kð 	Kð	) ¤ð 	)°´ð 	)ð 	)ð 	)ð 	)ð	MØœ[ð	MØ79´{ð	MàŒ[ð	Mð 	Mð 	Mð 	Mð	˜rœ{ð 	¨r¬{ð 	ð 	ð 	ð 	ð
	M ¤ð 	M°´ð 	Mð 	Mð 	Mð 	Mð	&˜œð 	&¨¬ð 	&¸¼ð 	&ð 	&ð 	&ð 	&ð	&˜œð 	&¨¬ð 	&¸¼ð 	&ð 	&ð 	&ð 	&ð
	/˜œð 	/¨¬ð 	/¸¼ð 	/ð 	/ð 	/ð 	/ð	˜BœKð 	¨b¬kð 	¸b¼kð 	ð 	ð 	ð 	ð
	˜rœ{ð 	¨r¬{ð 	ð 	ð 	ð 	ð	"˜bœkð 	"¨b¬kð 	"ð 	"ð 	"ð 	"ð	 r¤{ð 	°r´{ð 	ð 	ð 	ð 	ð "�k (¤-°´Ñ8Ô8ˆØ �[ ¤¨r¬uÑ5Ô5ˆ
Ø�˜Xœ_¨dÑ3Ô3ˆØ�˜Xœ_¨dÑ3Ô3ˆˆˆr   re   rG   rg   rf   c                 ó°  ‡— t           j        h}| |v Šˆfd„}t          |¦  «        }i t           j         |t          j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j	         ||j	        ¦  «        “t           j
         ||j
        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t&          j         ||j        ¦  «        “t&          j         ||j        ¦  «        “t&          j         ||j        ¦  «        “t.          j         ||j        ¦  «        “t.          j         ||j        ¦  «        “t.          j         ||j        ¦  «        “t.          j         ||j        ¦  «        “t.          j         |d„ ¦  «        t.          j          ||j!        ¦  «        t.          j"        t.          j"        i¥}| |v r||          n
 || ¦  «        S )Nc                 óp   •‡ ‡— dt           j        fˆfd„Št          j        ‰ ¦  «        ˆ ˆfd„¦   «         }|S )Nr   c                 ó4  •— t          | t          j        t          j        f¦  «        r| S t          | t          ¦  «        s‰r6t          | t
          ¦  «        r!t          j        t	          | ¦  «        ¦  «        S t          | t
          t          j        f¦  «        r!t          j	        t          | ¦  «        ¦  «        S t          | t          t          j        f¦  «        r!t          j        t          | ¦  «        ¦  «        S t          dt          | ¦  «        › �¦  «        ‚)Nzcan't lift type: )rQ   r'   r©   rR   ÚboolÚintÚBoolValÚsympyÚIntegerr¢   ÚfloatÚFloatÚRealValr6   Útype)rX   Úas_bools    €r   Úwrapz z3op.<locals>.lift.<locals>.wrap  sà   ø€ Ý˜a¥"¤+­r¬zÐ!:Ñ;Ô;ð Ø�Hõ ˜a¥Ñ&Ô&ð /¨7ð /µzÀ!ÅSÑ7IÔ7Ið /Ýœ:¥d¨1¡g¤gÑ.Ô.Ð.Ý˜a¥#¥u¤}Ð!5Ñ6Ô6ð -Ýœ9¥S¨¡V¤VÑ,Ô,Ð,Ý˜a¥%­¬Ð!5Ñ6Ô6ð 0Ýœ:¥e¨A¡h¤hÑ/Ô/Ð/Ý Ð!>µT¸!±W´WÐ!>Ð!>Ñ?Ô?Ð?r   c                  óô   •— t          | ¦  «        dk    rEt          | d         t          t          f¦  «        r#t          ˆfd„| d         D ¦   «         ¦  «        f}nt          ˆfd„| D ¦   «         ¦  «        } ‰|Ž S )Nr+   r   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rP   r   ©r   rX   r¿   s     €r   rS   z6z3op.<locals>.lift.<locals>.wrapper.<locals>.<genexpr>(  s+   øè è € Ð)CÐ)C°a¨$¨$¨q©'¬'Ð)CÐ)CÐ)CÐ)CÐ)CÐ)Cr   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rP   r   rÂ   s     €r   rS   z6z3op.<locals>.lift.<locals>.wrapper.<locals>.<genexpr>*  s+   øè è € Ð(?Ð(?°Q¨¨¨a©¬Ð(?Ð(?Ð(?Ð(?Ð(?Ð(?r   )ÚlenrQ   ÚlistrZ   )rH   r]   Úfuncr¿   s     €€r   r`   z#z3op.<locals>.lift.<locals>.wrapper$  s„   ø€ õ �t‘9”9 ’>�>¥j°°a´½4Å¸-Ñ&HÔ&H�>Ý$)Ð)CÐ)CÐ)CÐ)C¸4À¼7Ð)CÑ)CÔ)CÑ$CÔ$CÐ#E�L�Lå#(Ð(?Ð(?Ð(?Ð(?¸$Ð(?Ñ(?Ô(?Ñ#?Ô#?�Là�t˜\Ð*Ð*r   )r'   r3   ra   rb   )rÆ   r`   r¿   r¾   s   ` @€r   Úliftzz3op.<locals>.lift  so   øøø€ ð@�2œ:ð @ð @ð @ð @ð @ð @õ Œ_˜TÑ"Ô"ð+ð +ð +ð +ð +ñ #Ô"ð+ð ˆNr   c                 ó   — | r|n|S rP   r   )r‰   ÚtÚfs      r   ú<lambda>zz3op.<locals>.<lambda>F  s   € °Q°°°¸A€ r   )#rª   Únot_re   r'   ÚNotr«   r­   r®   r¯   r°   r±   r‚   Útruedivrz   r•   r    ÚbuiltinsÚroundr£   Úmathr†   r~   rˆ   ÚtorchÚ	sym_floatrl   Úsym_maxr�   Úsym_minr�   rs   Úsym_iteÚ	_sym_sqrtr�   Ú_assert)rG   rg   Úboolean_opsrÇ   ÚopsÚreplacement_mapr¾   s         @r   Úz3oprÜ     sQ  ø€ õ
  ”}�oˆØ˜Ð#ˆð	ð 	ð 	ð 	ð 	õ4 �YÑÔˆð
åŒM˜4˜4¥¤™<œ<ð
õ ŒM˜4˜4 ¤Ñ0Ô0ð
õ ŒL˜$˜$˜sœ~Ñ.Ô.ð	
õ
 ŒO˜T˜T #¤*Ñ-Ô-ð
õ ŒO˜T˜T #¤*Ñ-Ô-ð
õ Ô˜t˜t C¤LÑ1Ô1ð
õ Ô˜d˜d 3¤7™mœmð
õ ŒL˜$˜$˜sœw™-œ-ð
õ ŒL˜$˜$˜sœw™-œ-ð
õ ŒN˜D˜D Ô!1Ñ2Ô2ð
õ ŒI�t�t˜CœH‘~”~ð
õ ŒJ˜˜˜SœY™œð
õ ŒJ˜˜˜SœY™œð
õ" ŒO˜T˜T #¤+Ñ.Ô.ð#
õ$ ŒM˜4˜4 ¤™=œ=ð%
õ& ŒM˜4˜4 ¤™=œ=ð'
õ( ŒM˜4˜4 ¤Ñ,Ô,ð)
õ* ŒM˜4˜4Ð =Ð =Ñ>Ô>ÝŒO˜T˜T #¤(™^œ^õ ŒM�5œ=ð3
ð 
ˆð6 ')¨OÐ&;Ð&;ˆ˜rÔ"Ð"ÀÀÀbÁÄÐIr   c                   ó°   ‡ — e Zd Zdej        j        ddfˆ fd„Zdedee	df         de
eef         d	efd
„Zdedee	df         de
eef         d	efˆ fd„Zˆ xZS )ÚPopulateValidatorÚgraphrg   rf   c                 óž   •— || _         t          j                             i |¬¦  «        }t	          ¦   «                              |d¬¦  «         d S )N)Úrootrß   T)Úgarbage_collect_values)rg   rÒ   ÚfxÚGraphModuleÚsuperÚ__init__)r\   rß   rg   ÚmoduleÚ	__class__s       €r   ræ   zPopulateValidator.__init__X  sI   ø€ à&ˆDŒNõ ”X×)Ò)¨r¸Ð)Ñ?Ô?ˆFÝ‰GŒG×Ò˜V¸DÐÑAÔAÐAÐAÐAr   ÚtargetrH   .Úkwargsr   c                 óh   — t          j        ¦   «         d         }| j                             |¦  «        S )NÚsymbol)Úfx_tracebackÚget_current_metarg   Úz3var)r\   ré   rH   rê   rì   s        r   ÚplaceholderzPopulateValidator.placeholder`  s-   € õ "Ô2Ñ4Ô4°XÔ>ˆFØ”>×'Ò'¨Ñ/Ô/Ð/r   c                 ó0  •— |t           j        k    r6t          ¦   «                              t	          || j        ¦  «        ||¦  «        S t          |¦  «        dk    sJ dt          |¦  «        › d�¦   «         ‚| j                             |d         ¦  «         d S )Nr+   z'expected 1 argument on assertion. Got: r/   r   )rÒ   rØ   rå   Úcall_functionrÜ   rg   rÄ   Úadd_source_expr)r\   ré   rH   rê   rè   s       €r   rò   zPopulateValidator.call_functionf  s‹   ø€ ð �œÒ&Ð&å‘w”w×,Ò,­T°&¸$¼.Ñ-IÔ-IÈ4ÐQWÑXÔXÐXõ �D‘	”	˜Q’��ØE½¸T¹¼ÐEÐEÐEñ ”�àŒN×*Ò*¨4°¬7Ñ3Ô3Ð3Ð3Ð3r   )r¤   r¥   r¦   rÒ   rã   ÚGraphræ   r   r
   r   r   r4   r   rð   rò   Ú__classcell__)rè   s   @r   rÞ   rÞ   W  sî   ø€ € € € € ð	B %¤(¤.ð 	BÐ=Sð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð	0Ø ð	0Ø(-¨h¸¨mÔ(<ð	0ØFJÈ3ÐPSÈ8Änð	0àð	0ð 	0ð 	0ð 	0ð	4Ø ð	4Ø(-¨h¸¨mÔ(<ð	4ØFJÈ3ÐPSÈ8Änð	4àð	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4r   rÞ   c                   óÚ  — e Zd Zh d£Z	 	 	 	 d!d„Zdedej        dej	        fd	„Z
d
ej        dej        dej        fd„Zd
ej        dej        dej        fd„Zd
ej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zd
ej        dej        dej        fd„Zd
ej        dej        dej        fd„Zdedefd„Zdej        dej	        fd „ZdS )"Ú	SympyToZ3>   ÚeqÚgeÚgtÚleÚltÚneÚaddÚmulrg   rf   r   Nc                 óF   — || _         t          | j         ¦  «        | _        d S rP   )Ú
_validatorre   Ú_ops)r\   rg   s     r   ræ   zSympyToZ3.__init__|  s    € ð (ˆDŒOÝ˜tœÑ/Ô/ˆDŒIˆIˆIr   ÚvalueÚdtypec                 ó@  — |t           j        u r!t          j        t	          |¦  «        ¦  «        S |t           j        u r!t          j        t          |¦  «        ¦  «        S |t           j        u r!t          j	        t          |¦  «        ¦  «        S t          d|› �¦  «        ‚)Nzunsupported dtype (SympyToZ3): )rÒ   Úint64r'   r¢   r¶   Údoubler¼   rº   rµ   r·   r6   )r\   r  r  s      r   ÚconstantzSympyToZ3.constantƒ  s‚   € à�œÐ#Ð#Ý”y¥ U¡¤Ñ,Ô,Ð,Ø�œÐ$Ð$Ý”z¥%¨¡,¤,Ñ/Ô/Ð/Ø�œ
Ð"Ð"Ý”z¥$ u¡+¤+Ñ.Ô.Ð.ÝÐF¸uÐFÐFÑGÔGÐGr   r%   c                 óp   — |t           j        k    rt          j        |¦  «        S t	          d|› d�¦  «        ‚)Nz	to_dtype z NYI)rÒ   Úfloat64r'   rj   ÚNotImplementedError©r\   r%   r  s      r   Úto_dtypezSympyToZ3.to_dtype�  s7   € Ø�œÒ%Ð%Ý”y ‘|”|Ð#Ý%Ð&=°%Ð&=Ð&=Ð&=Ñ>Ô>Ð>r   c                 ó*   — t          j        |¦  «        S rP   )r'   ro   r  s      r   Útrunc_to_intzSympyToZ3.trunc_to_int’  s   € Ý”8˜A‘;”;Ðr   c                 ó6   — | j                              |¦  «        S rP   )r  r£   r  s      r   r£   zSympyToZ3.round_to_int•  s   € Ø”9×)Ò)¨!Ñ,Ô,Ð,r   rt   ru   c                 ó8   — | j                              ||¦  «        S rP   ©r  rz   ry   s      r   Úint_truedivzSympyToZ3.int_truediv˜  ó   € ð ”9—=’= ¨KÑ8Ô8Ð8r   c                 ó8   — | j                              ||¦  «        S rP   r  ry   s      r   rÎ   zSympyToZ3.truediv�  r  r   c                 ó8   — | j                              ||¦  «        S rP   ©r  r‚   ry   s      r   r‚   zSympyToZ3.floordiv¢  s   € ð ”9×%Ò% i°Ñ=Ô=Ð=r   c                 ó8   — | j                              ||¦  «        S rP   r  ry   s      r   rz   zSympyToZ3.div§  s   € Ø”9×%Ò% i°Ñ=Ô=Ð=r   r–   r—   c                 ó8   — | j                              ||¦  «        S rP   ©r  r"   rš   s      r   r"   zSympyToZ3.powª  ó   € Ø”9—=’=  sÑ+Ô+Ð+r   c                 ó8   — | j                              ||¦  «        S rP   r  rš   s      r   Úpow_by_naturalzSympyToZ3.pow_by_natural­  r  r   r‘   r’   c                 ó8   — | j                              ||¦  «        S rP   )r  r•   r”   s      r   r•   zSympyToZ3.mod°  s   € Ø”9—=’=  AÑ&Ô&Ð&r   c                 ó6   — | j                              |¦  «        S rP   )r  r†   r  s      r   Úceil_to_intzSympyToZ3.ceil_to_int³  s   € Ø”9—>’> !Ñ$Ô$Ð$r   c                 ó6   — | j                              |¦  «        S rP   )r  r~   r  s      r   Úfloor_to_intzSympyToZ3.floor_to_int¶  s   € Ø”9—?’? 1Ñ%Ô%Ð%r   Únamec                 ór  — t           j        t           j        t           j        | j        j        | j        j        | j        j        | j        j        | j        j	        | j        j
        | j        j        | j        j        dœ}||v r||         S || j        v rt          t          |¦  «        S t!          d|› �¦  «        ‚)N)r«   r®   rÌ   r­   r¯   r°   r±   r~   r†   ÚminimumÚmaximumzunhandled operator: )r'   r¬   r™   rÍ   r  r­   r¯   r°   r±   r~   r†   r�   r�   ÚOPERATOR_HANDLESÚgetattrrª   ÚAttributeError)r\   r#  ÚREPLACEMENTs      r   Ú__getattr__zSympyToZ3.__getattr__¹  s¦   € åœÝ”uÝœØ#œyÔ4Ø"œiÔ2Øœ)Ô*Øœ)Ô*ØœœØœ	œØœ9œ=Øœ9œ=ðð ˆKð �{Ð"Ð"Ø" 4Ô(Ð(Ø�tÔ,Ð,Ð,Ý�x¨Ñ.Ô.Ð.Ý Ð!>¸Ð!>Ð!>Ñ?Ô?Ð?r   Úexprc                 ó8   — t          | | j        j        |¦  «        S rP   )r   r  Úsymbols)r\   r,  s     r   ÚrunzSympyToZ3.runÎ  s   € Ý  d¤oÔ&=¸tÑDÔDÐDr   )rg   rf   r   N)r¤   r¥   r¦   r'  ræ   r   rÒ   r  r'   r3   r  r©   r  r  r£   r  rÎ   r‚   rz   r"   r  r•   r   r"  r4   r+  r¸   ÚBasicr/  r   r   r   r÷   r÷   y  s  € € € € € ØMÐMÐMÐð	0à-ð	0ð ð	0ð 	0ð 	0ð 	0ð	H #ð 	H¨e¬kð 	H¸b¼jð 	Hð 	Hð 	Hð 	Hð	?˜bœkð 	?°%´+ð 	?À"Ä+ð 	?ð 	?ð 	?ð 	?ð
	 "¤+ð 	°e´kð 	ÀbÄkð 	ð 	ð 	ð 	ð	- "¤+ð 	-°e´kð 	-ÀbÄkð 	-ð 	-ð 	-ð 	-ð	9Øœ[ð	9Ø79´{ð	9àŒ[ð	9ð 	9ð 	9ð 	9ð
	9Øœ[ð	9Ø79´{ð	9àŒ[ð	9ð 	9ð 	9ð 	9ð
	>Øœ[ð	>Ø79´{ð	>àŒ[ð	>ð 	>ð 	>ð 	>ð
	> ¤ð 	>¸2¼;ð 	>È2Ì;ð 	>ð 	>ð 	>ð 	>ð	,˜BœKð 	,¨b¬kð 	,¸b¼kð 	,ð 	,ð 	,ð 	,ð	, r¤{ð 	,¸¼ð 	,ÈÌð 	,ð 	,ð 	,ð 	,ð	'˜œð 	'¨¬ð 	'¸¼ð 	'ð 	'ð 	'ð 	'ð	% ¤ð 	%°U´[ð 	%ÀRÄ[ð 	%ð 	%ð 	%ð 	%ð	& "¤+ð 	&°e´kð 	&ÀbÄkð 	&ð 	&ð 	&ð 	&ð	@ Cð 	@¨Cð 	@ð 	@ð 	@ð 	@ð*	E˜EœKð 	E¨B¬Jð 	Eð 	Eð 	Eð 	Eð 	Eð 	Er   r÷   c                   ó  — e Zd Zdd„Zdej        dej        fd„Zdej        de	dej        fd„Z
dej        ddfd	„Zdej        dej        fd
„Zdej        ddfd„Zdd„Zdeej        ej        f         ddfd„Zdd„Zdd„ZdS )rf   r   Nc                 óº   — t                                d¦  «         i | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d S )Nznew instance)ÚlogÚdebugr.  ÚsetÚ_source_exprsÚ_target_exprsÚ_assertions©r\   s    r   ræ   zTranslationValidator.__init__à  sM   € Ý�IŠI�nÑ%Ô%Ð%ð <>ˆDŒLõ
 36±%´%ˆDÔõ
 36±%´%ˆDÔõ 14±´ˆDÔÐÐr   rì   c                 óH   — || j         v sJ d|› �¦   «         ‚| j         |         S )NzZ3 variable not found for: )r.  )r\   rì   s     r   rï   zTranslationValidator.z3varõ  s3   € Ø˜Tœ\Ð)Ð)Ð)Ð+QÈÐ+QÐ+QÑ)Ô)Ð)Ø”< Ô'Ð'r   r½   c                 óÒ  — || j         v r| j         |         S t                               d|j        |j        ¦  «         |t
          u r?t          j        |j        ¦  «        }|j        r| j	         
                    |dk    ¦  «         nX|t          u rt          j        |j        ¦  «        }n5|t          u rt          j        |j        ¦  «        }nt          d|› �¦  «        ‚|| j         |<   |S )Nznew variable: %s (%s)r   z"unsupported type for Z3 variable: )r.  r3  r4  r#  r¤   r¶   r'   ÚIntÚis_positiver7  rþ   rº   ÚRealrµ   ÚBoolÚRuntimeError)r\   rì   r½   Úvars       r   Úadd_varzTranslationValidator.add_varú  sÚ   € Ø˜œÐ%Ð%Ø”| FÔ+Ð+å�IŠIÐ-¨v¬{¸D¼MÑJÔJÐJà•sˆ{ˆ{Ý”f˜Vœ[Ñ)Ô)�ð Ô%ð 4ØÔ&×*Ò*¨3°ª7Ñ3Ô3Ð3øØ���Ý”g˜fœkÑ*Ô*��Ø���Ý”g˜fœkÑ*Ô*��å"Ð#NÈÐ#NÐ#NÑOÔOÐOà#&ˆDŒL˜Ñ ØˆJr   r   c                 ó|   — |j         D ]3}t          |t          j        ¦  «        sJ ‚|                      |¦  «         Œ4d S rP   )Úfree_symbolsrQ   r¸   ÚSymbolrï   )r\   r   Úss      r   Ú_check_freesymbolsz'TranslationValidator._check_freesymbols  sH   € Ø”^ð ð �Ý! !¥U¤\Ñ2Ô2Ð2Ð2Ð2ð —
’
˜1‘”��ð	ð r   c                 ó˜   — t          | ¦  «                             |¦  «        }t          |t          j        ¦  «        sJ d|› �¦   «         ‚|S )Nz"expected boolean expression. Got: )r÷   r/  rQ   r'   rR   ©r\   r   Úz3exprs      r   Úto_z3_boolean_exprz'TranslationValidator.to_z3_boolean_expr  sZ   € Ý˜t‘_”_×(Ò(¨Ñ+Ô+ˆFÝØ�œ
ñô ð =ð =à<°FÐ<Ð<ñ=ô =ð ð ˆMr   c                 óœ   — || j         vr(t                               dt          |¦  «        ¦  «         | j                              |¦  «         d S )Nzadd source guard: %s)r6  r3  r4  r   rþ   )r\   r   s     r   ró   z$TranslationValidator.add_source_expr   sH   € Ø˜Ô*Ð*Ð*Ý—	’	Ð0µ%¸±(´(Ñ;Ô;Ð;ØÔ×"Ò" 1Ñ%Ô%Ð%Ð%Ð%r   úsympy.logic.boolalg.Booleanc                 óð   — |                       |¦  «         |                      |¦  «        }|| j        vr(t                               dt          |¦  «        ¦  «         | j                             |¦  «         d S )Nzadd target guard: %s)rG  rK  r7  r3  r4  r   rþ   rI  s      r   Úadd_target_exprz$TranslationValidator.add_target_expr%  so   € Ø×#Ò# AÑ&Ô&Ð&Ø×,Ò,¨QÑ/Ô/ˆFØ˜Ô*Ð*Ð*Ý—	’	Ð0µ%¸±-´-Ñ@Ô@Ð@ØÔ×"Ò" 6Ñ*Ô*Ð*Ð*Ð*r   c                 ób  — t          |t          j        ¦  «        r+|                      |¦  «         |                      |¦  «        }n|}t          |t
          j        ¦  «        sJ ‚|| j        vr(t           	                    dt          |¦  «        ¦  «         | j                             |¦  «         d S )Nzadd assertion: %s)rQ   r¸   r0  rG  rK  r'   rR   r8  r3  r4  r   rþ   )r\   r   Úrefs      r   rx   z"TranslationValidator.add_assertion,  s¢   € Ý˜!�Uœ[Ñ)Ô)ð Ø×'Ò'¨Ñ*Ô*Ð*Ø×-Ò-¨aÑ0Ô0��à�Ý˜c¥2¤:Ñ.Ô.Ð.Ð.Ð.Ø˜$Ô*Ð*Ð*Ý—	’	Ð-­u°S©z¬zÑ:Ô:Ð:ØÔ× Ò  Ñ%Ô%Ð%Ð%Ð%r   c                 ó|   — t          d¦  «        5  |                      ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NzTranslationValidator.validate)r   Ú	_validater9  s    r   ÚvalidatezTranslationValidator.validate7  s‚   € ÝÐ=Ñ>Ô>ð (ð (Ø—~’~Ñ'Ô'ð(ð (ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   �1±5¸5c                 óT  ‡— t          | j        ¦  «        dk    st          | j        ¦  «        dk    rd S t          j        d¦  «        }|                     t          ¦   «         ¬¦  «         | j        D ]}|                     |¦  «         Œ|                     t          j	        t          j
        | j        Ž ¦  «        ¦  «          |j        | j        Ž  t                               d¦  «         |                     ¦   «         }|t          j        k    rB|                     ¦   «         Št!          ‰| j        | j        ˆfd„| j        D ¦   «         ¬¦  «        ‚|t          j        k    rt                               d¦  «         d S |t          j        k    sJ ‚t                               d¦  «         d S )	Nr   ÚQF_NRA)Útimeoutztranslation validation: startc                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS r   )Úevaluate)r   ÚinpÚmodels     €r   r   z2TranslationValidator._validate.<locals>.<listcomp>b  s;   ø€ ð )ð )ð )Ø #ÀÇÂÐPSÑATÔATð)Øð)ð )ð )r   )Úfailed_source_exprsz:translation validation: could not validate: got z3.unknownztranslation validation: success)rÄ   r6  r7  r'   Ú	SolverForr5  Útranslation_validation_timeoutr8  rþ   rÍ   r¬   r3  r4  ÚcheckÚsatr[  ÚValidationExceptionÚunknownÚwarningÚunsat)r\   ÚsolverÚ	assertionÚrr[  s       @r   rS  zTranslationValidator._validate;  s©  ø€ Ý�4Ô%Ñ&Ô&¨!Ò+Ð+­s°4Ô3EÑ/FÔ/FÈ!Ò/KÐ/Kð �tõ ”\ (Ñ+Ô+ˆFà�JŠJÕ=Ñ?Ô?ˆJÑ@Ô@Ð@ð "Ô-ð &ð &�	Ø—
’
˜9Ñ%Ô%Ð%Ð%ð �JŠJ•r”v�bœf dÔ&8Ð9Ñ:Ô:Ñ;Ô;Ð;ØˆFŒJ˜Ô*Ð+Ð+å�IŠIÐ5Ñ6Ô6Ð6Ø—’‘”ˆAØ•B”FŠ{ˆ{ð Ÿš™œ�Ý)ØØÔ$ØÔ&ð)ð )ð )ð )Ø'+Ô'9ð)ñ )ô )ð	ñ ô ð ð �œ
’?�?õ —K’KØTñô ð ð ð ð
 ¥¤š=˜=˜=˜=Ý—I’IÐ?Ñ@Ô@Ð@Ð@Ð@r   )r   N)r   rM  r   N)r¤   r¥   r¦   ræ   r¸   rE  r'   r3   rï   r   rB  r0  rG  rR   rK  ró   rO  r   rx   rT  rS  r   r   r   rf   rf   ß  s[  € € € € € ð	6ð 	6ð 	6ð 	6ð*	( ¤ð 	(°´ð 	(ð 	(ð 	(ð 	(ð
	 %¤,ð 	°dð 	¸r¼zð 	ð 	ð 	ð 	ð0	¨¬ð 	¸ð 	ð 	ð 	ð 	ð	¨¬ð 	¸¼
ð 	ð 	ð 	ð 	ð	& R¤Zð 	&°Dð 	&ð 	&ð 	&ð 	&ð
	+ð 	+ð 	+ð 	+ð		& 5¨¬°U´[Ð)@Ô#Að 		&Àdð 		&ð 		&ð 		&ð 		&ð	(ð 	(ð 	(ð 	(ð6	Að 6	Að 6	Að 6	Að 6	Að 6	Ar   T)	r   rÜ   rÞ   r÷   rf   Útranslation_validation_enabledr^  ra  ÚBisectValidationExceptionF)rh  r^  ra  ri  )Ú_configc                  óD   — t          ¦   «          t          ot          j        S rP   )Ú_assert_z3_installed_if_tv_setÚ_HAS_Z3ÚconfigÚtranslation_validationr   r   r   rh  rh  �  s   € õ #Ñ$Ô$Ð$ÝÐ4•vÔ4Ð4r   c                  ó   — t           j        S rP   )rn  r^  r   r   r   r^  r^  –  s   € ÝÔ0Ð0r   c                  óD   — t           st          j        rJ d¦   «         ‚d S d S )Nzotranslation validation requires Z3 package. Please, either install z3-solver or disable translation validation.)rm  rn  ro  r   r   r   rl  rl  š  s?   € Ýð �&Ô7ð ð ð	7ñô Ð7ð ð ð ð r   c                   ó   — e Zd Zd„ Zd„ ZdS )ra  c                 óÌ  ‡— t           sJ ‚dt          fˆfd„}dt          fd„} |t          t          |‰¦  «        ¦  «        ¦  «        } |t          t          t          |¦  «        ¦  «        ¦  «        } |t          t          t          |¦  «        ¦  «        ¦  «        }	 |t          t          t          |¦  «        ¦  «        ¦  «        }
d| _        d|› d|› d|	› d|
› �| _        d S )	Nr   c                 ó   •— | › d‰|          › �S )Nú: r   )Úsymr[  s    €r   Ú	symbolstrz/ValidationException.__init__.<locals>.symbolstr¥  s   ø€ ØÐ)Ð)˜U 3œZÐ)Ð)Ð)r   c                 ó@   — d                      d„ | D ¦   «         ¦  «        S )Nú
c              3   ó    K  — | ]	}d |› �V — Œ
dS )z  ==> Nr   )r   r%   s     r   rS   zBValidationException.__init__.<locals>.joinlines.<locals>.<genexpr>©  s(   è è € Ð6Ð6¨a˜\ a˜\˜\Ð6Ð6Ð6Ð6Ð6Ð6r   )rE   )Úxss    r   Ú	joinlinesz/ValidationException.__init__.<locals>.joinlines¨  s#   € Ø—9’9Ð6Ð6°2Ð6Ñ6Ô6Ñ6Ô6Ð6r   ztranslation validation failed.zModel:
z

Assertions:
z

Target Expressions:
z

Failed Source Expressions:
)rm  r4   ÚsortedÚmapr   ÚmsgÚdetails)r\   r[  Ú
assertionsÚtarget_exprsr\  rw  r|  Ú	model_strÚassertions_strÚtarget_exprs_strÚfailed_source_exprs_strs    `         r   ræ   zValidationException.__init__¢  s#  ø€ Ýˆˆˆwð	*�cð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð	7�Sð 	7ð 	7ð 	7ð 	7ð �I�f¥S¨°EÑ%:Ô%:Ñ;Ô;Ñ<Ô<ˆ	Ø"˜¥6­#­e°ZÑ*@Ô*@Ñ#AÔ#AÑBÔBˆØ$˜9¥V­Cµ°|Ñ,DÔ,DÑ%EÔ%EÑFÔFÐØ"+ )­Fµ3µuÐ>QÑ3RÔ3RÑ,SÔ,SÑ"TÔ"TÐà3ˆŒðà
ðð ð
 ðð ð ðð ð ðð ˆŒˆˆr   c                 ó$   — | j         › d| j        › �S ©Nú

©r  r€  r9  s    r   Ú__str__zValidationException.__str__¾  ó   € Ø”(Ð.Ð. ¤Ð.Ð.Ð.r   N©r¤   r¥   r¦   ræ   r‹  r   r   r   ra  ra  ¡  s2   € € € € € ðð ð ð8/ð /ð /ð /ð /r   ra  c                   ó   — e Zd Zd„ Zd„ ZdS )ri  c                 óh   — d|› d|› �| _         d|                     ¦   «         › d|j        › �| _        d S )Nz#translation validation failed when ru  z)Failure occurred while running node:
    r‰  )r  Úformat_noder€  )r\   Úvalidation_excr,  Úfailed_actionÚtraced_nodes        r   ræ   z"BisectValidationException.__init__Ã  sQ   € ØP¸ÐPÐPÈ$ÐPÐPˆŒðà×ÒÑÔðð ð Ôð	ð ˆŒˆˆr   c                 ó$   — | j         › d| j        › �S rˆ  rŠ  r9  s    r   r‹  z!BisectValidationException.__str__Ë  rŒ  r   Nr�  r   r   r   ri  ri  Â  s2   € € € € € ðð ð ð/ð /ð /ð /ð /r   ri  c                 óZ  ‡‡‡‡‡‡— ddl mŠmŠm} ddlm}m}mŠ | j        Šdt          j
        j        d|fˆˆfd„}d|dt          fˆˆfd„Šd|d	t          t          t                            dt          t                   fˆfd
„Šdt          j
        j        dt          t                   fˆˆˆˆfd„} ‰| |                      ¦   «         ¦  «        }|st"                               d¦  «         d S | j        rt(          j        r|‚i }d„ | j        j        D ¦   «         }ddt1          |¦  «        dz
  }}
}	|	|k     rY|	|z   dz  }
||
         }t"                               d|
 ||¦  «        ¦  «          ||¦  «        ||
<   ||
         r|
}n|
dz   }	|	|k     °Y|	|v rt5          ||	         t          ¦  «        sJ ‚||	         } ||¦  «        }|                     ¦   «         rd}n#|                     ¦   «         sJ d|› �¦   «         ‚d}|j        }|€J ‚t1          |¦  «        dk    s"J d|j        › dt1          |¦  «        › �¦   «         ‚t5          |d         t>          j         ¦  «        s(J d|j        › dtC          |d         ¦  «        › �¦   «         ‚tE          ||	         |d         ||j#        |         ¬¦  «        ‚)Nr   )ÚFakeTensorMetaÚreplay_shape_env_eventsÚShapeEnvEvent)ÚCURRENT_NODE_KEYÚShapeEnvÚSHAPEENV_EVENT_KEYÚnoder   c                 ó@   •— ‰| j         v sJ ‚‰| j         ‰                  S rP   )Úmeta)rœ  r›  Úeventss    €€r   Úget_node_eventzbisect.<locals>.get_node_eventê  s)   ø€ Ø! T¤YÐ.Ð.Ð.Ð.Ø�d”iÐ 2Ô3Ô4Ð4r   Ú	shape_envc           	      ó~  •‡ — t          |t          ¦  «        r|S t          |t          j        ¦  «        r,t          j        |j                             ‰ ¦  «        ¦  «        S t          |t          j        ¦  «        r,t          j        |j                             ‰ ¦  «        ¦  «        S t          |‰¦  «        sJ ‚ ‰t          ˆˆ fd„|                     ¦   «         D ¦   «         ¦  «        t          ˆˆ fd„| 	                    ¦   «         D ¦   «         ¦  «         ‰‰ | 
                    ¦   «         ¦  «        |j        ¦  «        S )Nc              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S rP   r   ©r   rF  Únew_with_shape_envr¡  s     €€r   rS   z5bisect.<locals>.new_with_shape_env.<locals>.<genexpr>ü  s1   øè è € ÐHÐH°qÐ$Ð$ Y°Ñ2Ô2ÐHÐHÐHÐHÐHÐHr   c              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S rP   r   r¤  s     €€r   rS   z5bisect.<locals>.new_with_shape_env.<locals>.<genexpr>ý  s1   øè è € ÐJÐJ°qÐ$Ð$ Y°Ñ2Ô2ÐJÐJÐJÐJÐJÐJr   )rQ   r¶   rÒ   ÚSymIntrœ  Úwith_shape_envÚSymFloatrZ   ÚsizeÚstrideÚstorage_offsetÚ	is_nested)r¡  Úfaker–  r¥  s   ` €€r   r¥  z"bisect.<locals>.new_with_shape_envó  s&  øø€ Ý�d�CÑ Ô ð 	ØˆKÝ�d�EœLÑ)Ô)ð 	EÝ”< ¤	× 8Ò 8¸Ñ CÔ CÑDÔDÐDÝ�d�EœNÑ+Ô+ð 	GÝ”> $¤)×":Ò":¸9Ñ"EÔ"EÑFÔFÐFÝ˜$ Ñ/Ô/Ð/Ð/Ð/Øˆ~ÝÐHÐHÐHÐHÐH¸D¿IºI¹K¼KÐHÑHÔHÑHÔHÝÐJÐJÐJÐJÐJ¸D¿KºK¹M¼MÐJÑJÔJÑJÔJØÐ˜y¨$×*=Ò*=Ñ*?Ô*?Ñ@Ô@ØŒNñ	
ô 
ð 	
r   Útracked_fakesc                 ó¸   •‡ — |€J ‚	 ‰                       ˆˆ fd„|D ¦   «         d„ |D ¦   «         d„ |D ¦   «         ¬¦  «         d S # t          $ r}|cY d }~S d }~ww xY w)Nc                 ó2   •— g | ]} ‰‰|j         ¦  «        ‘ŒS r   )r®  )r   rX   r¥  r¡  s     €€r   r   z8bisect.<locals>.check_shapeenv_fails.<locals>.<listcomp>  s)   ø€ ÐNÐNÐN¸1Ð#Ð# I¨q¬vÑ6Ô6ÐNÐNÐNr   c                 ó   — g | ]	}|j         ‘Œ
S r   )ÚsourcerW   s     r   r   z8bisect.<locals>.check_shapeenv_fails.<locals>.<listcomp>  s   € Ð1Ð1Ð1˜a�”Ð1Ð1Ð1r   c                 ó   — g | ]	}|j         ‘Œ
S r   )Úsymbolic_contextrW   s     r   r   z8bisect.<locals>.check_shapeenv_fails.<locals>.<listcomp>  s   € ÐJÐJÐJ°q Ô 2ÐJÐJÐJr   )Úinput_contexts)Úproduce_guardsra  )r¡  r¯  r   r¥  s   `  €r   Úcheck_shapeenv_failsz$bisect.<locals>.check_shapeenv_fails  s§   øø€ ð Ð(Ð(Ð(ð	ð ×$Ò$ØNÐNÐNÐNÐNÀÐNÑNÔNØ1Ð1 =Ð1Ñ1Ô1ØJÐJ¸MÐJÑJÔJð %ñ ô ð ð
 �4øÝ"ð 	ð 	ð 	ØˆHˆHˆHˆHˆHˆHøøøøð	øøøs   ˆ9A Á
AÁAÁAÁAc                 óª   •— | j         ‰         } ‰‰d |dz   …         ¦  «        }|j                             ¦   «           ‰|‰|         j        ¦  «        S r„   )rž  rß   Úlintr¯  )rœ  r{   r¡  r›  r¸  rŸ  r—  s      €€€€r   Úcheck_node_failsz bisect.<locals>.check_node_fails  s[   ø€ Ø”Ð-Ô.ˆà+Ð+¨F°<°V¸a±Z°<Ô,@ÑAÔAˆ	ØŒ×ÒÑÔÐØ#Ð# I¨v°f¬~Ô/KÑLÔLÐLr   z2translation validation succeeded: no errors found.c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS r   )ré   rÒ   rØ   )r   rœ  s     r   r   zbisect.<locals>.<listcomp>1  s-   € ð ð ð Ø°$´+ÅÄÒ2NÐ2NˆÐ2NÐ2NÐ2Nr   r+   r.   zbisecting at %s: %sÚ
evaluatingzunexpected event type: zadding runtime assertzbisecting expects z/ to have at least 2 positional arguments. Got: z9 to have a SymPy expression as its second argument. Got: )r,  r’  r“  )$Útorch.fx.experimental.recordingr–  r—  r˜  Ú%torch.fx.experimental.symbolic_shapesr™  rš  r›  rŸ  rÒ   rã   ÚNoder   r   r   ra  Ú_snapshot_tracked_fakesr3  ÚinfoÚshould_record_eventsrn  Ú translation_validation_no_bisectrß   ÚnodesrÄ   r4  rQ   Úis_evaluate_exprÚis_defer_runtime_assertrH   r#  r¸   r0  r½   ri  rž  )r¡  r˜  r™  rš  r   r»  Úlast_exceptionÚ	exceptionÚassert_nodesÚleftÚmidÚrightrœ  Úeventr’  rH   r–  r›  r¸  rŸ  r¥  r—  s                   @@@@@@r   ÚbisectrÏ  Û  s  øøøøøø€ ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð Ô€Fð5�UœXœ]ð 5¨}ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð
 hð 
½ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ØðÝ,4µT½#´YÔ,?ðå	Õ%Ô	&ðð ð ð ð ð ð&M�uœxœ}ð MµÕ:MÔ1Nð Mð Mð Mð Mð Mð Mð Mð Mð Mð *Ð)Ø�9×4Ò4Ñ6Ô6ñô €Nð ð õ 	�ŠÐEÑFÔFÐFØˆàÔ)ð ­VÔ-Tð ð Ðð €Iðð Ø"œÔ.ðñ ô €Lð
 ˜!�S Ñ.Ô.°Ñ2ˆuˆ#€Dà
�Š,ˆ,Ø�e‰| Ñ!ˆà˜CÔ ˆÝ�	Š	Ð'¨¨n¨n¸TÑ.BÔ.BÑCÔCÐCð *Ð)¨$Ñ/Ô/ˆ	�#‰à�SŒ>ð 	ØˆEˆEà˜‘7ˆDð �Š,ˆ,ð �9ÐÐ¥¨I°d¬OÕ=PÑ!QÔ!QÐÐÐQà˜Ô€DØˆN˜4Ñ Ô €Eà×ÒÑÔð 0Ø$ˆˆà×,Ò,Ñ.Ô.ÐQÐQÐ0QÈ%Ð0QÐ0QÑQÔQÐ.Ø/ˆàŒ:€DØÐÐÐÝˆt‰9Œ9˜Š>ˆ>ˆ>ð	˜UœZð 	ð 	Ý�D‘	”	ð	ð 	ñ Œ>ˆ>õ �d˜1”g�uœ{Ñ+Ô+ð ð ð	 ˜UœZð 	 ð 	 Ý�T˜!”W‘”ð	 ð 	 ñô Ð+õ
 $Ø�$ŒØ�!ŒWØ#Ø”IÐ.Ô/ð	ñ ô ð r   )=rÏ   ra   ÚloggingrÑ   rª   Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   r   r¸   rÒ   Útorch.fxÚtorch.fx.tracebackrã   Ú	tracebackrí   Útorch._dynamo.excr   Útorch._dynamo.utilsr   Útorch.fx.noder   r   Útorch.utils._sympy.interpr   Ú	getLoggerr¤   r3  r'   r3   r4   r   rc   re   rÜ   ÚInterpreterrÞ   r÷   rf   rm  Ú__all__ÚImportErrorÚtorch.fx.experimentalrj  rn  rµ   rh  r¶   r^  rl  ra  ri  rÏ  r   r   r   ú<module>rß     s¬  ðà €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oà €€€à €€€Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð €gÔ˜Ñ!Ô!€ðs	Ø€I€I€IðHP&�”ð P& ð P&ð P&ð P&ð P&ðjð ð ð$ ð_4ð _4ð _4ð _4ð _4ñ _4ô _4ñ „Yð_4ðR?J�ð ?JÐ&<ð ?JÀð ?Jð ?Jð ?Jð ?JðT4ð 4ð 4ð 4ð 4˜EœHÔ0ñ 4ô 4ð 4ðDVEð VEð VEð VEð VEñ VEô VEð VEðLRAð RAð RAð RAð RAñ RAô RAð RAð~ €Gð
ð 
ð 
€G€Gøð ð ð ð Ø€Gðð ð €G€G€Gðøøøð2 4Ð 3Ð 3Ð 3Ð 3Ð 3ð5¨ð 5ð 5ð 5ð 5ð1¨ð 1ð 1ð 1ð 1ðð ð ð/ð /ð /ð /ð /Ð.ñ /ô /ð /ðB
/ð 
/ð 
/ð 
/ð 
/Ð 4ñ 
/ô 
/ð 
/ð Ð Ñ  Ô  Ð  ðFð Fð Fð Fð Fs   Á1A%C ÃC+Ã*C+