
    *-hܴ                     
   S SK r S SKr\ R                  R                  S:  a  S SKrOSSKJr  SSK7  SSK7  S SK7  S r	0 \
S_\S_\S	_\S
_\S_\S_\S_\S	_\S_\S_\S_\S_\S_\S_\S_\S_\S_0 \S_\S_\S_\S_\S_\ S_\!S_\"S_\#S_\$S_\%S_\&S_\'S _\(S!_\)S"_\*S#_\+S$_E0 \,S%_\-S&_\.S'_\/S(_\0S)_\1S*_\2S+_\3S,_\4S-_\5S._\6S/_\7S0_\8S1_\9S2_\:S3_\;S4_\<S5_E0 \=S6_\>S7_\?S8_\@S9_\AS:_\BS;_\CS<_\DS=_\ES1_\FS>_\GS?_\HS@_\ISA_\JSB_\KSC_\LSD_\MSE_E0 \NSF_\OSG_\PSH_\QSI_\RSJ_\SSK_\TSL_\USM_\VSN_\WSO_\XSP_\YSQ_\ZSR_\[SS_\\ST_\]SU_\^SV_E\_SW\`SX\aSY0Eqb\\\c\d\e\f\\\\g\h\i\j\\\\$\%\\\!\$\*\+\,\-\5\6/rk\l\ \"/rm0 \S _\lS_\"S_\ S_\eSZ_\fSZ_\SZ_\SZ_\SZ_\$SZ_\%SZ_\cS_\dS_\S_\S_\5S[_\6S[_0 \S\_\!S]_\S^_\gS__\hS__\iS__\jS__\S__\*S__\+S__\,S__\-S__\S__\nS_\oSZ_\pSZ_\qSZ_E\rSZ\sS\tS\uS_\vS_\wS_\xS_\yS_0Eqz0 \{S`_\|Sa_\}Sb_\~Sc_\Sd_\Se_\Sf_\Sg_\Sh_\Si_\sSj_\tSk_\nSl_\oSm_\pSn_\qSo_\Sp_0 \Sq_\Sr_\rSs_\St_\Su_\ySv_\vSw_\xSx_\uSy_\wSz_\S{_\S|_\S}_\S~_\S_\S_\S_Er0 \{S_\|S_\}S_\~S_\S_\S_\S_\S_\S_\S_\sS_\tS_\oS_\pS_\qS_\nS_\ySv_\vS$\xS&\uS#\wS%0Er\s\t\o\p\q\v\x\u\w/	r\" \\!\\c\\e\15      rS rS rS rS rS rS r\ R                  R                  S:  a  S SKrS rOS r\e\\\f\\\$\%/rSqSq0 \S_\S_\S_\S_\S_\S_\hS_\jS_\gS_\iS_\eS_\*S_\+S_\,S_\-S_\.S_\/S_\0S\1S\S\#S\'S\5S\6S\7S0Er\\\\.\/\0\1\#\'\7/
r\/r\#SZ\'SZ\7S[\.S_\/S_\0S_\1S_\.S_\/S_\0S_\1S_\S\S\S\S0rS r0 q0 q0 q\k H  rSG[L        \'   M     \m H  rSG[N        \'   M     \ H  rSG[P        \'   M     S rS rS rS rS r0 q[         H  r[        \   r\G[^        \'   M     \ H  r\\   r\G[^        \'   M     0 r[         H  r[        \   r\\\'   M     \ H  r\\   r\\\'   M     0 q0 q\k H  rSG[d        \'   M     \ H  rSG[d        \'   M     \m H  rSG[f        \'   M     \ H  rSG[f        \'   M     S rS rS rS r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rS rSS jrS rS rS rS rS rSS jrSS jrSS jrSS jr " S S\5      r " S S5      r " S S5      q " S SG[        5      r\" 5       rG[        5       qS rS rSrSS jrSS jr\" S5        S rS rS rS rS rg)    N      )z3)*c                 (    U (       d  [        U5      eg N)Z3Exception)condmsgs     F/home/james-whalen/.local/lib/python3.13/site-packages/z3/z3printer.py
_z3_assertr      s    #     TrueFalsez==DistinctIfAndOrXorNotImplies/%ToRealToInt**IsInt+-r   |&~^UDivSRemURem
RotateLeftRotateRightz<=<z>=>ULEULTUGEUGTSignExtZeroExtRepeatBitVecz>>z<<LShRConcatExtractBV2IntMapSelectStoreKExtAtMostAtLeastPbLePbGePbEqPrefixOfSuffixOfUnitContainsReplaceAtNthIndexOfLastIndexOfLengthStrToIntIntToStrInReRePlusStarOptionUnionRange	Intersect
ComplementfpIsNaNfpIsInffpIsZero
fpIsNormalfpIsSubnormalfpIsNegativefpIsPositive                  zRoundNearestTiesToEven()zRoundNearestTiesToAway()zRoundTowardPositive()zRoundTowardNegative()zRoundTowardZero()fpPlusInfinityfpMinusInfinityfpNaNfpPZerofpNZerofpAddfpSubfpNegfpMulfpDivfpRemfpAbsfpMinfpMaxfpFMAfpSqrtfpRoundToIntegralfpEQfpLTfpGTfpLEQfpGEQfpFPfpToFPfpToFPUnsignedfpToUBVfpToSBVfpToReal
fpToIEEEBVzRNE()zRNA()zRTP()zRTN()zRTZ()z+ooz-ooNaNz+0.0z-0.0c                     U [         ;   $ r   )
_ASSOC_OPSks    r   	_is_assocr      s    
?r   c                 X    [        U 5      =(       d    U [        :H  =(       d	    U [        :H  $ r   )r   	Z3_OP_SUB
Z3_OP_BSUBr   s    r   _is_left_assocr      s    Q<<1	><Q*_<r   c                 x    U [         :H  =(       d+    U [        :H  =(       d    U [        :H  =(       d    [        U 5      $ r   )	Z3_OP_ANDZ3_OP_OR	Z3_OP_IFFr   r   s    r   _is_html_assocr      s'    	>LQ(]La9nL	!Lr   c                 X    [        U 5      =(       d    U [        :H  =(       d	    U [        :H  $ r   )r   r   r   r   s    r   _is_html_left_assocr      s    !AYA!z/Ar   c                 T    U [         :H  =(       d    U [        :H  =(       d	    U [        :H  $ r   )	Z3_OP_ADD
Z3_OP_BADDZ3_OP_FPA_ADDr   s    r   _is_addr          	>BQ*_B]0BBr   c                 T    U [         :H  =(       d    U [        :H  =(       d	    U [        :H  $ r   )r   r   Z3_OP_FPA_SUBr   s    r   _is_subr     r   r   c                 4    [         R                  " U 5      S   $ Nr   )codecsunicode_escape_decodexs    r   ur   
  s    ++A.q11r   c                     U $ r    r   s    r   r   r     s    r   z...z&hellip;=z&not;z&and;z&or;z&rArr;z&lt;z&gt;z&le;z&ge;z&middot;z&le;<sub>u</sub>z&lt;<sub>u</sub>z&ge;<sub>u</sub>z&gt;<sub>u</sub>z/<sub>u</sub>z%<sub>u</sub>z&gt;&gt;z&lt;&lt;z&gt;&gt;<sub>u</sub>
         c                     [        U [        R                  5      =(       d'    [        U [        5      =(       d    [        U [        5      $ r   )
isinstancer   
Z3PPObjectlisttupleas    r   _support_ppr   =  s,    a'V:a+>V*QPUBVVr   Tc                 .    [         R                  U S5      $ NF)
_infix_mapgetr   s    r   	_is_infixr   N      >>!U##r   c                 .    [         R                  U S5      $ r   )_infix_compact_mapr   r   s    r   _is_infix_compactr   S  s    !!!U++r   c                 .    [         R                  U S5      $ r   )
_unary_mapr   r   s    r   	_is_unaryr   X  r   r   c                     [        U [        R                  5      (       a  U nOU R                  5       nUR	                  5       n[
        R                  US 5      nUc  UR                  5       $ U$ r   )r   r   FuncDeclRefdeclkind_z3_op_to_strr   name)r   fr   ns       r   _op_namer   ]  sU    !R^^$$FFH	A!T"Ayvvxr   c                 .    [         R                  U S5      $ Ni )_z3_precedencer   r   s    r   _get_precedencer   j  s    a((r   c                 .    [         R                  U S5      $ r   )_html_infix_mapr   r   s    r   _is_html_infixr         q%((r   c                 .    [         R                  U S5      $ r   )_html_unary_mapr   r   s    r   _is_html_unaryr     r   r   c                    [        U [        R                  5      (       a  U nOU R                  5       nUR	                  5       n[
        R                  US 5      nUcs  [        UR                  5       UR                  5      n[        UR                  5       U5      [        :X  a  S[        UR                  5       U5      -  $ UR                  5       $ U$ )Nz&#950;<sub>%s</sub>)r   r   r   r   r   _z3_html_op_to_strr   Z3_get_decl_namectx_refastZ3_get_symbol_kindZ3_INT_SYMBOLZ3_get_symbol_intr   )r   r   r   r   syms        r   _html_op_namer     s    !R^^$$FFH	Aq$'Ayqyy{AEE2aiik3/=@(+<QYY[#+NNN 668Or   c                 .    [         R                  U S5      $ r   )_z3_html_precedencer   r   s    r   _get_html_precedencer     s    ""1f--r   c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)FormatObjecti  c                     gr   r   selfs    r   
is_composeFormatObject.is_compose      r   c                     gr   r   r   s    r   	is_choiceFormatObject.is_choice  r   r   c                     gr   r   r   s    r   	is_indentFormatObject.is_indent  r   r   c                     gr   r   r   s    r   	is_stringFormatObject.is_string  r   r   c                     gr   r   r   s    r   is_linebreakFormatObject.is_linebreak  r   r   c                     gNTr   r   s    r   is_nilFormatObject.is_nil      r   c                     / $ r   r   r   s    r   childrenFormatObject.children  s    	r   c                     g r   r   r   s    r   as_tupleFormatObject.as_tuple  r   r   c                     g)N)r   Fr   r   s    r   space_upto_nlFormatObject.space_upto_nl  s    r   c                     U $ r   r   r   s    r   flatFormatObject.flat  s    r   r   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r     s4    r   r   c                        \ rS rSrS rS rSrg)NAryFormatObjecti  c           	      |    [        U Vs/ s H  n[        U[        5      PM     sn5      (       d   eXl        g s  snf r   )allr   r   r   )r   fsr   s      r   __init__NAryFormatObject.__init__  s3    <AJq,/<==== =s   9c                     U R                   $ r   r   r   s    r   r   NAryFormatObject.children      }}r   r  N)r   r  r  r  r
  r   r  r   r   r   r  r    s    r   r  c                   ,    \ rS rSrS rS rS rS rSrg)ComposeFormatObjecti  c                     gr   r   sefs    r   r   ComposeFormatObject.is_compose  r   r   c                 d    SU R                    Vs/ s H  oR                  5       PM     sn4$ s  snf )Ncomposer   r   r   r   s     r   r   ComposeFormatObject.as_tuple  s'    $--@-QJJL-@AA@   -c                 z    SnU R                    H&  nUR                  5       u  p4X-   nU(       d  M"  US4s  $    US4$ )Nr   TFr   r   )r   rchildsnls        r   r   !ComposeFormatObject.space_upto_nl  sG    ]]E'')EAAr4y 	 #
 5zr   c                 r    [        U R                   Vs/ s H  oR                  5       PM     sn5      $ s  snf r   )r  r   r   r  s     r   r   ComposeFormatObject.flat  s'    $--8-Q-8998s   4r   N)	r   r  r  r  r   r   r   r   r  r   r   r   r  r    s    B:r   r  c                   ,    \ rS rSrS rS rS rS rSrg)ChoiceFormatObjecti  c                     gr   r   r  s    r   r   ChoiceFormatObject.is_choice  r   r   c                 d    SU R                    Vs/ s H  oR                  5       PM     sn4$ s  snf )Nchoicer  r  s     r   r   ChoiceFormatObject.as_tuple  s'    ?A::<?@@?r  c                 <    U R                   S   R                  5       $ r   r  r   s    r   r    ChoiceFormatObject.space_upto_nl  s    }}Q--//r   c                 <    U R                   S   R                  5       $ r   )r   r   r   s    r   r   ChoiceFormatObject.flat  s    }}Q$$&&r   r   N)	r   r  r  r  r   r   r   r   r  r   r   r   r&  r&    s    A0'r   r&  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
IndentFormatObjecti  c                 J    [        U[        5      (       d   eXl        X l        g r   )r   r   indentr  )r   r3  r  s      r   r
  IndentFormatObject.__init__  s    %....
r   c                     U R                   /$ r   )r  r   s    r   r   IndentFormatObject.children  s    

|r   c                 P    SU R                   U R                  R                  5       4$ )Nr3  )r3  r  r   r   s    r   r   IndentFormatObject.as_tuple  s     $++tzz':':'<==r   c                 6    U R                   R                  5       $ r   )r  r   r   s    r   r    IndentFormatObject.space_upto_nl  s    zz''))r   c                 ^    [        U R                   U R                  R                  5       5      $ r   )r3  r  r   r   s    r   r   IndentFormatObject.flat  s    dkk4::??#455r   c                     gr   r   r   s    r   r   IndentFormatObject.is_indent
  r   r   )r  r3  N)r   r  r  r  r
  r   r   r   r   r   r  r   r   r   r1  r1    s     
>*6r   r1  c                   2    \ rS rSrS rS rS rS rS rSr	g)	LineBreakFormatObjecti  c                     SU l         g )N spacer   s    r   r
  LineBreakFormatObject.__init__  s	    
r   c                     gr   r   r   s    r   r   "LineBreakFormatObject.is_linebreak  r   r   c                     g)Nz<line-break>r   r   s    r   r   LineBreakFormatObject.as_tuple  s    r   c                     g)N)r   Tr   r   s    r   r   #LineBreakFormatObject.space_upto_nl  s    r   c                 ,    [        U R                  5      $ r   )	to_formatrD  r   s    r   r   LineBreakFormatObject.flat  s    $$r   rC  N)
r   r  r  r  r
  r   r   r   r   r  r   r   r   r@  r@    s    %r   r@  c                   ,    \ rS rSrS rS rS rS rSrg)StringFormatObjecti  c                 >    [        U[        5      (       d   eXl        g r   )r   strstring)r   rS  s     r   r
  StringFormatObject.__init__   s    &#&&&&r   c                     gr   r   r   s    r   r   StringFormatObject.is_string$  r   r   c                     U R                   $ r   rS  r   s    r   r   StringFormatObject.as_tuple'  s    {{r   c                 F    [        U S[        U R                  5      5      S4$ )NsizeF)getattrlenrS  r   s    r   r    StringFormatObject.space_upto_nl*  s    fc$++&67??r   rX  N)	r   r  r  r  r
  r   r   r   r  r   r   r   rP  rP    s    @r   rP  c                 .    U R                  5       u  p#X!:*  $ r   )r   )r   
space_leftr   r!  s       r   fitsra  .  s    OOEA?r   c                 n    [        U [        5      (       a  U $ [        [        U 5      5      nUb  Xl        U$ r   )r   r   rP  rR  r[  )argr[  r  s      r   rM  rM  3  s2    #|$$
s3x(Fr   c                      [        U 5      S:X  a5  [        U S   [        5      (       d  [        U S   [        5      (       a  U S   n [	        U 5      $ Nr   r   )r]  r   r   r   r  )argss    r   r  r  =  sA    
4yA~:d1gt44
47E8R8RAwt$$r   c                     [        X5      $ r   )r1  )irc  s     r   r3  r3  C  s    a%%r   c                 8    [        U R                  5       U /5      $ r   )r&  r   )rc  s    r   grouprj  G  s    sxxz3/00r   c                      [        5       $ r   )r@  r   r   r   
line_breakrl  K  s     ""r   c                     [        U [        5      (       a   [        U S[        U R                  5      5      $ [        U 5      $ )Nr[  )r   rP  r\  r]  rS  r   s    r   _lenrn  O  s0    !'((q&#ahh-001vr   c                 6   [        5       nU(       d  SUl        / nUR                  U S   5        [        U 5      n[	        US-
  5       HD  nUR                  [        U5      5        UR                  U5        UR                  XS-      5        MF     [        U5      $ )N r   r   )rl  rD  appendr]  rangerM  r  )rf  seprD  r!  r  numrh  s          r   seqru  V  s|    	B
AHHT!W
d)C37^	3 		!e  1:r   c                     [        [        [        U 5      [        U5      [        [	        U5      [        U 5      -   [        U5      5      [        U5      5      5      $ r   )rj  r  rM  r3  r]  rn  ru  )headerrf  lprps       r   seq1rz  d  sI    6*"2B$v, 6 #D	+"2	( ) )r   c                 D   [        U5      S:X  a(  [        [        U 5      [        U5      [        U5      5      $ [        [        [	        [        U5      [        [        U5      [        U 5      5      5      [	        U[        [        U5      [        U5      5      5      5      5      $ r   r]  r  rM  rj  r3  ru  )rw  rf  rh  rx  ry  s        r   seq2r}  l  sv    
4yA~y()B-2GGWVCGWYr]IfDU-VW#Aws4y)B-'HIK L 	Lr   c                     [        U 5      S:X  a  [        [        U5      [        U5      5      $ [        [	        [        U5      [        [        U5      [        U 5      [        U5      5      5      5      $ r   r|  )rf  rx  ry  s      r   seq3r  t  sN    
4yA~y}im44VCGWYr]CIyQS}%UVWWr   c                       \ rS rSrS rSrg)StopPPExceptioni{  c                     g)Nzpp-interruptedr   r   s    r   __str__StopPPException.__str__|      r   r   N)r   r  r  r  r  r  r   r   r   r  r  {  s     r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)PPi  c                 <    SU l         SU l        SU l        SU l        g )N   <   F(   )	max_lines	max_widthbounded
max_indentr   s    r   r
  PP.__init__  s    r   c                    U R                   (       a  U R                  U R                  ::  a  [        U5      nU R                   (       aF  U R                  U-   U R                  :  a)  U R                  R                  [        [        5      5        g U R                  U-   U l        U R                  U-   U l        U R                  R                  [        UR                  5      5        g g r   )
r  posr  rn  outwriter   	_ellipses
ribbon_posrS  )r   r   r3  szs       r   	pp_stringPP.pp_string  s    ||txx4>>9aB||2 >q|,88b="&//B"6q{+  :r   c                 L    UR                    H  nU R                  X25        M     g r   )r   pp)r   r   r3  cs       r   
pp_composePP.pp_compose  s    AGGA r   c                     U R                   U R                  -
  nUS:  a>  [        UR                  S   U5      (       a   U R	                  UR                  S   U5        g U R	                  UR                  S   U5        g Nr   r   )r  r  ra  r   r  )r   r   r3  r`  s       r   	pp_choicePP.pp_choice  s[    ^^dhh.
>d1::a=*==GGAJJqM6*GGAJJqM6*r   c                    X l         SU l        U R                  S-   U l        U R                  U R                  :  a[  U R                  R                  [        S5      5        [        U5       H'  nU R                  R                  [        S5      5        M)     g U R                  R                  [        S5      5        [        5       e)Nr   r   
rB  z
...)	r  r  liner  r  r  r   rr  r  )r   r   r3  rh  s       r   pp_line_breakPP.pp_line_break  s    IIM	99t~~%HHNN1T7#6]qv& # HHNN1W:&!##r   c                 .   [        U[        5      (       a  U R                  X5        g UR                  5       (       a  U R                  X5        g UR	                  5       (       a=  U R                  UR                  [        X!R                  -   U R                  5      5        g UR                  5       (       a  U R                  X5        g UR                  5       (       a  U R                  X5        g UR                  5       (       a  U R                  X5        g g r   )r   rR  r  r   r   r  r  minr3  r  r   r  r   r  r   r  )r   r   r3  s      r   r  PP.pp  s    aNN1%[[]]NN1%[[]]GGAGGS((!2DOODE\\^^OOA&[[]]NN1%^^q)r   c                      SU l         SU l        SU l        Xl        U R	                  US5        g ! [
         a     g f = fr   )r  r  r  r  r  r  )r   r  r   s      r   __call__PP.__call__  s@    	DHDODIHGGAqM 		s   -0 
==)r  r  r  r  r  r  r  r  N)r   r  r  r  r
  r  r  r  r  r  r  r  r   r   r   r  r    s%    ,+
$ r   r  c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S?rAg@)A	Formatteri  c                     SU l         SU l        SU l        SU l        [	        [
        5      U l        SU l        SU l        g )N      Fr   i'  T)		max_depthmax_argsrational_to_decimal	precisionrM  r  ellipsesmax_visited
fpa_prettyr   s    r   r
  Formatter.__init__  s:    #( !), r   c                     U R                   $ r   r  r   s    r   pp_ellipsesFormatter.pp_ellipses  r  r   c                     g)Nz ->r   r   s    r   pp_arrowFormatter.pp_arrow  r   r   c                     g)Nz	<unknown>r   r   s    r   
pp_unknownFormatter.pp_unknown  s    r   c                 *    [        [        U5      5      $ r   )rM  r   r  s     r   pp_nameFormatter.pp_name  s    !%%r   c                     [        U5      $ r   )r   r  s     r   is_infixFormatter.is_infix      |r   c                     [        U5      $ r   )r   r  s     r   is_unaryFormatter.is_unary  r  r   c                     [        U5      $ r   )r   r  s     r   get_precedenceFormatter.get_precedence  s    q!!r   c                     [        U5      $ r   )r   r  s     r   is_infix_compactFormatter.is_infix_compact  s     ##r   c                 T    U R                  U5      =(       d    U R                  U5      $ r   )r  r  r  s     r   is_infix_unaryFormatter.is_infix_unary  s    }}Q34==#33r   c                 T    [        [        S5      [        SU5      [        S5      5      $ )N(r   ))r  rM  r3  r  s     r   	add_parenFormatter.add_paren  s    y~va|Ys^DDr   c                    [        U[        R                  5      (       aH  [        SU R	                  UR                  5       5      U R	                  UR                  5       5      45      $ [        U[        R                  5      (       a$  [        S[        UR                  5       5      45      $ [        U[        R                  5      (       a<  [        S[        UR                  5       5      [        UR                  5       5      45      $ [        U[        R                  5      (       a*  [        SU R	                  UR                  5       5      45      $ [        U[        R                  5      (       aJ  UR!                  5       (       a  [        S5      $ [        SU R	                  UR                  5       5      45      $ [        U[        R"                  5      (       a  [        S5      $ [        UR%                  5       5      $ )NArrayBitVecFPSortReSortStringSeqChar)r   r   ArraySortRefrz  pp_sortdomainrr  BitVecSortRefrM  r[  	FPSortRefebitssbits	ReSortRefbasis
SeqSortRefr   CharSortRefr   )r   r   s     r   r  Formatter.pp_sort  sM   a))$,,qxxz":DLL<S!TUU2++,,9QVVX#6"9::2<<((9QWWY#717799M"NOO2<<((4<<	#:"=>>2==)){{}} **QWWY 7:;;2>>**V$$QVVX&&r   c                 >   UR                  5       R                  5       nU[        :X  a  U R                  SU5      $ U[        :X  a  U R                  SU5      $ U[
        :X  a  U R                  SU5      $ U[        :X  a  U R                  U5      $ U R                  U5      $ )NEmptyFull)	r   r   Z3_OP_RE_EMPTY_SETpp_setZ3_OP_SEQ_EMPTYZ3_OP_RE_FULL_SETZ3_OP_CHAR_CONSTpp_charr  )r   r   r   s      r   pp_constFormatter.pp_const  s    FFHMMO"";;w**/!;;w**##;;vq))""<<?"||Ar   c                 4    [        UR                  5       5      $ r   rM  	as_stringr  s     r   pp_intFormatter.pp_int
      ''r   c                     U R                   (       d  [        UR                  5       5      $ [        UR                  U R                  5      5      $ r   )r  rM  r  
as_decimalr  r  s     r   pp_rationalFormatter.pp_rational  s4    ''Q[[]++Q\\$..9::r   c                 J    [        UR                  U R                  5      5      $ r   )rM  r  r  r  s     r   pp_algebraicFormatter.pp_algebraic  s    dnn566r   c                 @    [        SUR                  5       -   S-   5      $ )N"r  r  s     r   r  Formatter.pp_string  s    -455r   c                 4    [        UR                  5       5      $ r   r  r  s     r   pp_bvFormatter.pp_bv  r  r   c                 4    [        UR                  5       5      $ r   r  r  s     r   pp_fdFormatter.pp_fd  r  r   c                    [        [        R                  " U5      S5        U R                  (       a`  UR	                  5       R                  5       [        ;   a:  [        [        R                  UR	                  5       R                  5       5      5      $ [        [        R                  UR	                  5       R                  5       5      5      $ )Nzexpected FPRMNumRef)
r   r   is_fprm_valuer  r   r   _z3_op_to_fpa_pretty_strrM  r   _z3_op_to_fpa_normal_strr  s     r   pp_fprm_valueFormatter.pp_fprm_value  sy    2##A&(=>??3K K599!&&(--/JKK599!&&(--/JKKr   c                    [        [        U[        R                  5      S5        U R                  (       Gdc  / nUR                  5       (       a  UR                  [        [        [           5      5        UR                  [        S5      5        UR                  [        UR                  5       5      5        UR                  [        S5      5        [        U5      $ UR                  5       (       a  UR                  5       (       a&  UR                  [        [        [           5      5        O%UR                  [        [        [           5      5        UR                  [        S5      5        UR                  [        UR                  5       5      5        UR                  [        S5      5        [        U5      $ UR!                  5       (       a+  UR                  5       (       a  [        S5      $ [        S5      $ [        [        R"                  " U5      S5        / n[%        S5      n['        UR)                  5       UR*                  [-        U5      5      n[/        UR)                  5       UR*                  S5      n[1        UR)                  5       UR*                  5      nUR                  [        S	5      5        U(       a*  UR2                  S:w  a  UR                  [        S
5      5        UR                  [        U5      5        UR                  [        S5      5        UR                  [        U5      5        UR                  [        S5      5        UR                  [        UR                  5       5      5        UR                  [        S5      5        [        U5      $ UR                  5       (       a  [        [4        [           5      $ UR                  5       (       aA  UR                  5       (       a  [        [4        [           5      $ [        [4        [           5      $ UR!                  5       (       aA  UR                  5       (       a  [        [4        [6           5      $ [        [4        [8           5      $ [        [        R"                  " U5      S5        / n[:        R%                  S5      n['        UR)                  5       UR*                  [-        U5      5      n[/        UR)                  5       UR*                  S5      n[1        UR)                  5       UR*                  5      nU(       a*  UR2                  S:w  a  UR                  [        S
5      5        UR                  [        U5      5        US:w  aN  UR                  [        S5      5        UR                  [        U5      5        UR                  [        S5      5        [        U5      $ )Ntype mismatchr  r  z-zeroz+zerozexpecting FP num astr   FzFPVal(r   z*(2**, z))0)r   r   r   FPNumRefr  isNaNrq  rM  r  Z3_OP_FPA_NANsortr  isInf
isNegativeZ3_OP_FPA_MINUS_INFZ3_OP_FPA_PLUS_INFisZerois_fp_valuec_intZ3_fpa_get_numeral_signr   r   byref"Z3_fpa_get_numeral_exponent_string%Z3_fpa_get_numeral_significand_stringvaluer  Z3_OP_FPA_MINUS_ZEROZ3_OP_FPA_PLUS_ZEROctypes)r   r   r  sgnsgnbexpsigs          r   pp_fp_valueFormatter.pp_fp_value&  s   :a-?A		#;M#JKL3(1668,-3(qz!''))LLNNHHY'?@S'TUVHHY'?@R'STU3(1668,-3(qz!((**LLNN$W--$W--2>>!,.DEAh.qyy{AEE5:N8aeeUS;AIIKO8,-CIINHHYs^,3(7+,3(4)1668,-4)qz!		 !9-!HII''))LLNN$%=>Q%RSS$%=>P%QRR((**LLNN$%=>R%STT$%=>Q%RSS2>>!,.DE||Q'.qyy{AEE5:N8aeeUS;AIIKOCIINHHYs^,3(3JHHYw/0HHYs^,HHYs^,qz!r   c           
         [        [        U[        R                  5      S5        UR	                  5       R                  5       nSnU R                  (       a  U[        ;   a
  [        U   nO'U[        ;   a
  [        U   nOU[        ;   a	  [        U   nUR                  5       nU R                  (       Ga  U R                  U5      (       GaJ  US:  GaC  UR                  S5      n[        R                  " U5      (       Ga  [        R                  " UR                  5      R!                  U5      (       Ga  U R#                  U5      n/ n	UR                  S5      n
UR                  S5      n[%        U R'                  XS-   U5      5      n[%        U R'                  XS-   U5      5      n[        R(                  " U
5      (       a_  U
R	                  5       R                  5       nX:w  a<  U R                  U5      (       a&  U R#                  U5      U:  a  U R+                  U5      n[        R(                  " U5      (       a_  UR	                  5       R                  5       nX:w  a<  U R                  U5      (       a&  U R#                  U5      U:  a  U R+                  U5      nU	R-                  U5        U	R-                  [%        S5      5        U	R-                  [%        U5      5        U	R-                  [%        S5      5        U	R-                  U5        [/        U	5      $ OLU[0        :X  aB  [/        [%        S5      [%        U R'                  UR                  S5      US-   U5      5      /5      $ U[        ;   a	  [        U   n/ n	U	R-                  [%        U5      5        [        R2                  " U5      (       d  U	R-                  [%        S	5      5        S
nUR5                  5        HL  nU(       a  SnOU	R-                  [%        S5      5        U	R-                  U R'                  UUS-   U5      5        MN     U	R-                  [%        S5      5        [/        U	5      $ [%        UR7                  5       5      $ )Nr  ?r   r   r   r\   rB  r   r  TFr  r  )r   r   r   FPRefr   r   r  r  r  r   num_argsr  rc  r  get_default_rounding_modectxeqr  rM  pp_expris_appr  rq  r  Z3_OP_FPA_NEGis_constr   r  )r   r   dxsr   opr   rmpr  r   yarg1arg2child_kfirstr  s                    r   pp_fpFormatter.pp_fpm  s$   :a*O<FFHMMOOO%= =)!,B**)!,B-q!BJJL???}}QAFUU1X##B''B,H,H,O,R,RSU,V,V++A.AAaAaA$T\\!UB%?@D$T\\!UB%?@Dyy||"#&&(--/"<DMM',B,BtGZGZ[bGcfgGg#'>>$#7Dyy||"#&&(--/"<DMM',B,BtGZGZ[bGcfgGg#'>>$#7DHHTNHHYs^,HHYr]+HHYs^,HHTN"1:%m#	#	$,,quuQxQRUVQVXZ:[0\]^^(()!,B	2{{1~~HHYs^$EZZ\!EHHYt_-aQ34 " HHYs^$1:Q[[]++r   c                     / nSnUR                  5        H\  nUR                  U R                  XbS-   U5      5        US-   nXPR                  :  d  M=  UR                  U R	                  5       5          O   [        U R                  U5      U5      $ r  )r   rq  r<  r  r  rz  r  )r   r   r@  rA  r  r  r  s          r   	pp_prefixFormatter.pp_prefix  sy    ZZ\EHHT\\%Q34aBMM!))+, " DLLOQ''r   c                     [        U5      $ r   )r   r   r   s     r   is_assocFormatter.is_assoc  r  r   c                     [        U5      $ r   )r   rP  s     r   is_left_assocFormatter.is_left_assoc      a  r   c                 z   [        U5      nUR                  5       R                  5       nU R                  U5      nSnUR	                  5        GH  n	U R                  XS-   U5      n
S n[        R                  " U	5      (       a  U	R                  5       R                  5       nXk:X  ab  U R                  U5      (       d  U(       aE  U R                  U5      (       a/  U R                  XX45        [        U5      nXPR                  :  a    g OU R                  U5      (       a  U R                  U5      nX|:  dG  [        U5      (       a  [        U5      (       d'  [        U5      (       a)  U(       a"  [        U5      (       a  UR                  U
5        O UR                  U R!                  U
5      5        US-   nOR[        R"                  " U	5      (       a!  UR                  U R!                  U
5      5        OUR                  U
5        US-   nXPR                  :  a!  UR                  U R%                  5       5          g SnGM     g )NTr   F)r]  r   r   r  r   r<  r   r=  rQ  rT  infix_args_corer  r  r   r   rq  r  is_quantifierr  )r   r   r@  rA  r  r  r   rD  rI  r  child_pprH  child_ps                r   rX  Formatter.infix_args_core  s   VFFHMMO"ZZ\E||Eq5"5HGyy**,++-|q!1!1e@R@RST@U@U$$Ur5V% &$$W----g6;71::''2B2BPQ

W\ahipaqaqHHX&HHT^^H56!V!!%((12"!VMM!))+,E3 "r   c                 .    / nU R                  XX45        U$ r   )rX  )r   r   r@  rA  r  s        r   
infix_argsFormatter.infix_args  s    Q2)r   c           	         UR                  5       R                  5       nU R                  U5      (       a7  U R                  U5      n[	        [        U R                  XU5      US5      5      $ U R                  U5      n[        U5      nSUR                  -   Ul        US-   Ul	        [	        [        U R                  XU5      U5      5      $ )NFrB  r   )
r   r   r  r  rj  ru  r^  rn  rS  r[  )r   r   r@  rA  r   rB  r  s          r   pp_infixFormatter.pp_infix  s    FFHMMO  ##aBT__Q26EBCCaBbBbiiBI1fBGT__Q26;<<r   c                 t   UR                  5       R                  5       nU R                  U5      nUR                  5       S   nS n[        R
                  " U5      (       a  UR                  5       R                  5       nU R                  XbS-   U5      nXG:w  a=  U R                  U5      (       a'  U R                  U5      n	XY::  a  U R                  U5      n[        R                  " U5      (       a  U R                  U5      nU R                  U5      n
[        [        U
5      [        [        U
5      U5      5      $ r  )r   r   r  r   r   r=  r<  r  r  rY  r  r  rM  r3  rn  )r   r   r@  rA  r   rD  r  rH  rZ  r[  r   s              r   pp_unaryFormatter.pp_unary  s    FFHMMO"

Q99Ujjl'')G<<1ub1<D//88))'2G|>>(3E""~~h/H||AytDz8(DEEr   c                 R   U R                  XS-   U5      nS n[        R                  " U5      (       a  UR                  5       R	                  5       nU R                  U5      (       d/  [        R                  " U5      (       a%  UR                  5       S:w  a  U R                  U5      $ U$ Nr   )	r<  r   r=  r   r   r  is_rational_valuedenominator_as_longr  )r   rc  r@  rA  r  r   s         r   pp_power_argFormatter.pp_power_arg  s    LL!eR(99S>>
!Aq!!b&:&:3&?&?CD[D[D]abDb>>!$$Hr   c                     U R                  UR                  S5      US-   U5      nU R                  UR                  S5      US-   U5      n[        [        XE4SS5      5      $ )Nr   r   r   F)rj  rc  rj  ru  r   r   r@  rA  arg1_pparg2_pps         r   pp_powerFormatter.pp_power  sY    ##AEE!Ha!eR8##AEE!Ha!eR8S'+T59::r   c                     [        S5      $ )Nz!=rM  r   s    r   pp_neqFormatter.pp_neq  s    r   c           	      
   UR                  5       S:X  a^  U R                  5       n[        U5      nSUR                  -   Ul        US-   Ul        [        [        U R                  XU5      U5      5      $ U R                  XU5      $ )Nr\   rB  r   )	r8  rt  rn  rS  r[  rj  ru  r^  rM  )r   r   r@  rA  rB  r  s         r   pp_distinctFormatter.pp_distinct  sl    ::<1BbBbiiBI1fBGT__Q26;<<>>!++r   c                 H   UR                  5       S:w  a  U R                  XU5      $ U R                  UR                  S5      US-   U5      nU R                  UR                  S5      US-   U5      n[	        U[        S[	        [        S5      U[        S5      5      5      5      $ )Nr\   r   r   [])r8  rM  r<  rc  r  r3  rM  rm  s         r   	pp_selectFormatter.pp_select  s    ::<1>>!++ll1558QUB7Gll1558QUB7G7F1gingyY\~.^$_``r   c                     [        UR                  5       UR                  5       R                  S5      nU R	                  UR                  S5      US-   U5      n[        U R                  U5      [        U5      U/5      $ r  	Z3_get_decl_int_parameterr   r   r   r<  rc  rz  r  rM  )r   r   r@  rA  rD  rc  s         r   pp_unary_paramFormatter.pp_unary_param   s\    %aiik1668<<Cll1558QUB/DLLOilC%899r   c                 x   [        UR                  5       UR                  5       R                  S5      n[        UR                  5       UR                  5       R                  S5      nU R	                  UR                  S5      US-   U5      n[        U R                  U5      [        U5      [        U5      U/5      $ r  r  )r   r   r@  rA  highlowrc  s          r   
pp_extractFormatter.pp_extract%  s    (affhllAF'		QVVX\\1Ell1558QUB/DLLOioy~s%KLLr   c                    [        UR                  5       UR                  5       R                  S5      nU R	                  UR                  S5      US-   U5      n[        UR                  5       UR                  5       R                  5      S:  aT  [        UR                  5       UR                  5       R                  S5      n[        SU[        U5      [        U5      /5      $ [        SU[        U5      /5      $ )Nr   r   Loop)	r  r   r   r   r<  rc  Z3_get_decl_num_parametersrz  rM  )r   r   r@  rA  r  rc  r  s          r   pp_loopFormatter.pp_loop+  s    '		QVVX\\1Ell1558QUB/%aiik1668<<@1D,QYY[!&&(,,JDinio FGGFS)C.122r   c                 T    [        XR                  UR                  5       5      /5      $ r   )rz  r  r  )r   idr   s      r   r  Formatter.pp_set3  s    Baffh/011r   c                 P    UR                  5       S   n[        [        U5      5      $ r   )paramsrM  rR  )r   r   r   s      r   r  Formatter.pp_char6  s     HHJqMQ  r   c                     UR                  5       S:X  a!  U R                  UR                  S5      X#5      $ [        SUR	                  5        Vs/ s H  o@R                  XBS-   U5      PM     sn5      $ s  snf )Nr   r   MultiPattern)r8  r<  rc  rz  r   )r   r   r@  rA  rc  s        r   
pp_patternFormatter.pp_pattern:  sa    ::<1<<a!00QRQ[Q[Q](^Q]#cq5")EQ](^__(^s   A3
c                 L    UR                  5       S   nU R                  XAX#5      $ r   )r  pp_fdeclr   r   r@  rA  r   s        r   pp_isFormatter.pp_is@  s"    HHJqM}}Q1))r   c                 R    [         R                  " U5      nU R                  XAX#5      $ r   )r   get_map_funcr  r  s        r   pp_mapFormatter.pp_mapD  s!    OOA}}Q1))r   c                 p   / nSnUR                  [        UR                  5       5      5        UR                  5        H\  nUR                  U R	                  XsS-   U5      5        US-   nX`R
                  :  d  M=  UR                  U R                  5       5          O   [        U R                  U5      U5      $ r  )	rq  rM  r   r   r<  r  r  rz  r  )r   r   r   r@  rA  r  r  r  s           r   r  Formatter.pp_fdeclH  s    	1668$%ZZ\EHHT\\%Q34aBMM!))+, " DLLOQ''r   c           	          [        U R                  U5      U R                  UR                  5       5      U R	                  UR                  S5      US-   U5      /5      $ r  )rz  r  r  r  r<  rc  r   r   r@  rA  s       r   pp_KFormatter.pp_KT  sI    DLLOdll188:&>QUUSTXWX[\W\^`@a%bccr   c                 2   [        UR                  5       UR                  5       R                  S5      n[	        U R                  U5      [        UR                  5        Vs/ s H  o`R                  XbS-   U5      PM     sn5      [        U5      /5      $ s  snf r  
r  r   r   r   rz  r  r  r   r<  rM  r   r   r@  r   rA  r   chs          r   	pp_atmostFormatter.pp_atmostW  q    %aiik1668<<CDLLOdRSR\R\R^+_R^BLLUB,GR^+_&`bklmbn%opp+_    Bc                 2   [        UR                  5       UR                  5       R                  S5      n[	        U R                  U5      [        UR                  5        Vs/ s H  o`R                  XbS-   U5      PM     sn5      [        U5      /5      $ s  snf r  r  r  s          r   
pp_atleastFormatter.pp_atleast[  r  r  c           
      *   UR                  5       n[        [        U5      5      n[        UR	                  5       UR                  5       R                  S5      nU Vs/ s H9  n[        UR	                  5       UR                  5       R                  US-   5      PM;     n	nU Vs/ s H1  n[        U R                  XX   US-   U5      [        X   5      /5      PM3     n
n[        U R                  U5      [        U
5      [        U5      /5      $ s  snf s  snf r  )r   rr  r]  r  r   r   r   r  r<  rM  rz  r  )r   r   r@  r   rA  chsrchsr   rh  kslss              r   pp_pbcmpFormatter.pp_pbcmp_  s    jjlSX%aiik1668<<CSWXSWa'		QVVX\\1q5ISWXQUVQUAdDLLQ3Yru5EFGQUVDLLOd2h	!%=>> YVs   A D"8Dc                 
   [         R                  " U5      (       a  U R                  U5      $ [         R                  " U5      (       a  U R	                  U5      $ [         R
                  " U5      (       a  U R                  U5      $ [         R                  " U5      (       a  U R                  U5      $ [         R                  " U5      (       a  U R                  U5      $ [         R                  " U5      (       a  U R                  U5      $ [         R                  " U5      (       a  U R                  U5      $ [         R                  " U5      (       a  U R!                  XU5      $ [         R"                  " U5      (       a  U R%                  U5      $ [         R&                  " U5      (       a  U R)                  U5      $ UR+                  5       nUR-                  5       nU[.        :X  a  U R1                  XU5      $ U[2        :X  a  U R5                  XU5      $ U[6        :X  a  U R9                  XU5      $ U[:        :X  d  U[<        :X  d
  U[>        :X  a  U RA                  XU5      $ U[B        :X  a  U RE                  XU5      $ U[F        :X  a  U RI                  XU5      $ U[J        :X  a  U RM                  XU5      $ U[N        :X  a  U RQ                  XU5      $ U[R        :X  a  U RU                  XU5      $ U[V        :X  a  U RY                  XXC5      $ U[Z        :X  a  U R]                  XXC5      $ U[^        :X  a  U Ra                  XXC5      $ U[b        :X  a  U Ra                  XXC5      $ U[d        :X  a  U Ra                  XXC5      $ [         Rf                  " U5      (       a  U Ri                  XU5      $ U Rk                  U5      (       a  U Rm                  XU5      $ U Ro                  U5      (       a  U Rq                  XU5      $ U Rs                  XU5      $ r   ):r   is_int_valuer  rh  r  is_algebraic_valuer  is_bv_valuer  is_finite_domain_valuer  r  r  r%  r3  is_fprJ  is_string_valuer  r?  r  r   r   Z3_OP_POWERrp  Z3_OP_DISTINCTrw  Z3_OP_SELECTr|  Z3_OP_SIGN_EXTZ3_OP_ZERO_EXTZ3_OP_REPEATr  Z3_OP_EXTRACTr  Z3_OP_RE_LOOPr  Z3_OP_DT_ISr  Z3_OP_ARRAY_MAPr  Z3_OP_CONST_ARRAYr  Z3_OP_PB_AT_MOSTr  Z3_OP_PB_AT_LEASTr  Z3_OP_PB_LEr  Z3_OP_PB_GEZ3_OP_PB_EQ
is_patternr  r  ra  r  rd  rM  )r   r   r@  rA  r   r   s         r   pp_appFormatter.pp_appg  s5   ??1;;q>!!!!$$##A&&""1%%$$Q''^^A::a= &&q))::a= a  %%a((^^A##A&&XXa[[::aB''"">>!$$[[^^==##AAK}}Q2..n$''b11l"~~aB//n$^(;qL?P**144m#qR00m#||A"--k!zz!++o%{{1,,''yyr**&&~~aA22''qQ33k!}}Q111k!}}Q111k!}}Q111q!!qR00q!!}}Q2..q!!}}Q2..~~aB//r   c                     [         R                  " U5      n[        U5      nXE:  a  [        S[	        U5      45      $ [	        X5U-
  S-
     5      $ )NVarr   )r   get_var_indexr]  rz  rM  r   r   r@  rA  idxr  s         r   pp_varFormatter.pp_var  sJ    q!W9	#011RS1-..r   c                    [        UR                  5       5       Vs/ s H  n[        UR                  U5      5      PM     nnX5-   nU R	                  UR                  5       US-   U5      n[        U5      S:X  a  US   nO[        USS5      nUR                  5       (       a  Sn	OUR                  5       (       a  Sn	OSn	[        XU45      $ s  snf )Nr   r   rz  r{  ForAllExistsLambda)rr  num_varsrM  var_namer<  bodyr]  r  	is_forall	is_existsrz  
r   r   r@  rA  rh  ysnew_xsbody_ppys_pprw  s
             r   pp_quantifierFormatter.pp_quantifier  s    05ajjl0CD0C1i

1&0CD,,qvvxQ7r7a<qEES#&E;;==F[[]]FFFG,-- Es   $Cc                    U R                   S-   U l         X R                  :  d  U R                   U R                  :  a  U R                  5       $ [        R
                  " U5      (       a  U R                  XU5      $ [        R                  " U5      (       a  U R                  XU5      $ [        R                  " U5      (       a  U R                  XU5      $ [        U R                  5       5      $ rg  )visitedr  r  r  r   r=  r  rY  r  is_varr  rM  r  r  s       r   r<  Formatter.pp_expr  s    ||a'~~0@0@!@##%%99Q<<;;qR((a  %%aB//YYq\\;;qR((T__.//r   c                     UR                  5       nU[        :X  d
  U[        :X  aH  UR                  5       S   n[	        UR                  5       5      /n[        U R                  U5      U5      $ U R                  U5      $ r   )r   r  r  r  rM  r   rz  r  )r   r   r   gr  s        r   pp_declFormatter.pp_decl  sa    FFHqO3
1A1668$%AQ++||Ar   c                 p   U R                   S-   U l         X0R                  :  d  U R                   U R                  :  a  U R                  5       $ / nSnU HS  nUR	                  U" XsS-   U5      5        US-   nX`R
                  :  d  M4  UR	                  U R                  5       5          O   [        USS5      $ )Nr   r   rz  r{  )r  r  r  r  rq  r  r  )r   r   r   r@  rA  r  r  elems           r   pp_seq_coreFormatter.pp_seq_core  s    ||a'~~0@0@!@##%%DHHQtUB'(aBMM!))+,  AsC  r   c                 <    U R                  U R                  XU5      $ r   )r  r<  r  s       r   pp_seqFormatter.pp_seq  s    aB77r   c                 <    U R                  U R                  XU5      $ r   )r  r  r  s       r   
pp_seq_seqFormatter.pp_seq_seq  s    Q266r   c                    / nSnU H  nX   n[        U[        R                  5      (       a  U R                  U5      nOU R	                  US/ 5      nU R                  U5      nUR                  [        U[        S5      [        [        U5      S-   U5      5      5        US-   nX0R                  :  d  M  UR                  U R                  5       5          O   [        USS5      $ )Nr   z = r   r   rz  r{  )r   r   
FuncInterppp_func_interpr<  r  rq  r  rM  r3  rn  r  r  r  )r   mr  r  r@  rh  i_ppr   s           r   pp_modelFormatter.pp_model  s    AA!R]]++**1-||Aq"-<<?DHHWT9U#3VDJND5QRSaBMM!))+,  AsC  r   c                    UR                  5       nUS:  aZ  / n[        U5       H4  nUR                  U R                  UR	                  U5      S/ 5      5        M6     [        [        U5      5      nO"U R                  UR	                  S5      S/ 5      nU R                  UR                  5       S/ 5      n[        [        XV4U R                  5       5      5      $ re  )
r8  rr  rq  r<  	arg_valuerj  r  r+  ru  r  )r   ert  rf  rh  args_ppvalue_pps          r   pp_func_entryFormatter.pp_func_entry  s    jjl7D3ZDLLQB?@  DJ'Gll1;;q>1b9G<<	1b1S',dmmo>??r   c           	      ,   / nSnUR                  5       n[        U5       Hg  nUR                  U R                  UR	                  U5      5      5        US-   nX0R
                  :  d  MH  UR                  U R                  5       5          O   X0R
                  ::  ao  UR                  5       nUc  [        S5      nOU R                  US/ 5      nUR                  [        [        [        S5      U4U R                  5       5      5      5        [        USS5      $ )Nr   r   z#unspecifiedelserz  r{  )num_entriesrr  rq  r  entryr  r  
else_valuerM  r<  rj  ru  r  r  )r   r   r  r  rt  rh  else_valelse_pps           r   r  Formatter.pp_func_interp  s    mmosAHHT''
34aBMM!))+,  ||~H#N3,,xB7HHU3	& 17;T]]_MNOAsC  r   c                    / nSnU H  n[        U5      (       a!  UR                  U R                  U5      5        O#UR                  [        [	        U5      5      5        US-   nX0R
                  :  d  Mm  UR                  U R                  5       5          O   [        U[        5      (       a  [        U5      $ [        USS5      $ )Nr   r   rz  r{  )
r   rq  mainrM  rR  r  r  r   r   r  )r   r   r  r  r  s        r   pp_listFormatter.pp_list  s    D4  4)3t9-.aBMM!))+,  a7N3$$r   c                    [         R                  " U5      (       a  U R                  US/ 5      $ [         R                  " U5      (       a  U R	                  U5      $ [         R
                  " U5      (       a  U R                  U5      $ [        U[         R                  5      (       d  [        U[         R                  5      (       a  U R                  US/ 5      $ [        U[         R                  5      (       a!  U R                  UR                  5       S/ 5      $ [        U[         R                  5      (       a  UR                  5       $ [        U[         R                  5      (       a  UR                  5       $ [        U[         R                   5      (       a  U R#                  US/ 5      $ [        U[         R$                  5      (       a  U R'                  U5      $ [        U[         R(                  5      (       a  U R+                  U5      $ [        U[,        5      (       d  [        U[.        5      (       a  U R1                  U5      $ [3        U R5                  5       5      $ r   )r   is_exprr<  is_sortr  is_func_declr  r   Goal	AstVectorr  Solver
assertions
FixedpointsexprOptimizeApplyResultr  ModelRefr   r  r  r   r   r  rM  r  r  s     r   r  Formatter.main&  s   ::a==<<1b))ZZ]]<<?"__Q<<?"277##z!R\\'B'B;;q!R((299%%;;q||~q"552==))7792;;''7792>>**??1a,,2;;''==##2==))&&q))4  Jq%$8$8<<?"T__.//r   c                 2    SU l         U R                  U5      $ r   )r  r  r  s     r   r  Formatter.__call__@  s    yy|r   )r  r  r  r  r  r  r  r  N)Br   r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r3  rJ  rM  rQ  rT  rX  r^  ra  rd  rj  rp  rt  rw  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  r  r  r   r   r   r  r    sB   &"$4E'$
(;76((LE"N:,x	(!@

=F";
,a:
M32!`**
(dqq?;0z/. 0!87!"
@!&%"04r   r  c                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)HTMLFormatteriE  c                 V    [         R                  U 5        [        [        5      U l        g r   )r  r
  rM  _html_ellipsesr  r   s    r   r
  HTMLFormatter.__init__F  s    4 !.1r   c                     [        SS5      $ )Nz &rarr;r   rs  r   s    r   r  HTMLFormatter.pp_arrowK  s    A&&r   c                     g)Nz<b>unknown</b>r   r   s    r   r  HTMLFormatter.pp_unknownN  r  r   c                 2   [        U5      nUS   S:X  d  US   S:X  d	  US   S:X  a  [        US5      $ UR                  S5      nUS:X  d  US:X  a  [        U5      $ [        U5      nUS-   U:X  a  [        U5      $ [        USU < S	X#S-   U < S
3US-
  5      $ )Nr   r!   r   r   r   __r\   z<sub>z</sub>)r   rM  findr]  )r   r   r  r  r  s        r   r  HTMLFormatter.pp_nameQ  s    !Q43;!A$#+1Q?"&&,CbyC1H |#V7b=$Q<'$!Ac(AAgbM%RTVYZTZ[[r   c                     [        U5      $ r   )r   rP  s     r   rQ  HTMLFormatter.is_assoc`  rV  r   c                     [        U5      $ r   )r   rP  s     r   rT  HTMLFormatter.is_left_assocc  s    "1%%r   c                     [        U5      $ r   )r   r  s     r   r  HTMLFormatter.is_infixf  rV  r   c                     [        U5      $ r   )r   r  s     r   r  HTMLFormatter.is_unaryi  rV  r   c                     [        U5      $ r   )r   r  s     r   r  HTMLFormatter.get_precedencel  s    #A&&r   c                     [        S5      $ )Nz&ne;rs  r   s    r   rt  HTMLFormatter.pp_neqo  s      r   c           	          U R                  UR                  S5      US-   U5      nU R                  UR                  S5      US-   U5      n[        U[	        SS5      U[	        SS5      5      $ )Nr   r   z<sup>z</sup>)rj  rc  r<  r  rM  rm  s         r   rp  HTMLFormatter.pp_powerr  s`    ##AEE!Ha!eR8,,quuQxQ3w	'1 5w	(TU@VWWr   c                     [         R                  " U5      n[        U5      nXE:  a  [        SU-  S5      $ [        X5U-
  S-
     5      $ )Nz&#957;<sub>%s</sub>r   )r   r  r]  rM  r  s         r   r  HTMLFormatter.pp_varw  sI    q!W92S8!<<RS1-..r   c                    [        UR                  5       5       Vs/ s H  n[        UR                  U5      5      PM     nnX5-   nU R	                  UR                  5       US-   U5      n[        [        U5      5      nUR                  5       (       a  Sn	OUR                  5       (       a  Sn	OSn	[        [        [        U	S5      [        S[        U[        S5      [        5       U5      5      5      5      $ s  snf )Nr   z&forall;z&exist;z&lambda;z :)rr  r  rM  r  r<  r  rj  ru  r  r  r  r3  rl  r  s
             r   r  HTMLFormatter.pp_quantifier  s    05ajjl0CD0C1i

1&0CD,,qvvxQ7c"g;;==F[[]]FFWYvq1#Awuioz|U\']^` a 	a Es   $C6r  N)r   r  r  r  r
  r  r  r  rQ  rT  r  r  r  rt  rp  r  r  r  r   r   r   r&  r&  E  sF    2
' \!&!!'!X
/ar   r&  c                    U S:X  a  U(       a  [        S5        g[        S5        gU S:X  a  U(       a  [        S5        g[        S5        g[        [        U S 5      nUb0  [	        [        U[        U5      5      S5        [        [        X5        g[        [        U S 5      nUb0  [	        [        U[        U5      5      S5        [        [        X5        gg)N	html_modeTFr  z!Invalid pretty print option value)	set_html_modeset_fpa_prettyr\  _PPr   r   typesetattr
_Formatter)r   vvals      r   set_pp_optionrO    s    K$  % L4   5!
#q$
C
:ac+-PQQ
*a
&C
:ac+-PQ
A!r   c                 v    [         R                  " 5       n[        U[        U 5      5        UR	                  5       $ r   )ioStringIOrI  rL  getvalue)r   r  s     r   obj_to_stringrT    s'    
++-CZ]<<>r   c                 <    U (       a  [        5       qg [        5       qg r   )r&  rL  r  )flags    r   rG  rG    s    "_
[
r   c                    U [         l        U (       a=  [        R                  5        H  u  pU[        U'   M     [
         H  nS[        U'   M     g [        R                  5        H  u  pU[        U'   M     [
         H  nS[        U'   M     g )NTF)rL  r  r  itemsr   _z3_fpa_infixr   r  )rV  _k_vs      r   rH  rH    su     !J0668HR "M" 9B!JrN   1668HR "M" 9B"JrN  r   c                  "    [         R                  $ r   )rL  r  r   r   r   get_fpa_prettyr]    s       r   c                  *    [        [        [        5      $ r   )r   rL  r&  r   r   r   in_html_moder_    s    j-00r   c                 d    [        U 5      (       a  [        [        U 5      5        g [        U 5        g r   )r   printrT  r   s    r   r  r    s    1~~mAar   c                    [        [        U [        5      =(       d    [        U [        5      S5        [	        5       (       d  [        [        U 5      5        g [        S5        U  Ha  n[        [        U[        5      =(       d    [        U[        5      S5        [        S5        U H  n[        SU-  5        M     [        S5        Mc     [        S5        g )Nzmatrix expectedz4<table cellpadding="2", cellspacing="0", border="1">z<tr>z<td>%s</td>z</tr>z</table>)r   r   r   r   r_  ra  rT  )r  r  r  s      r   print_matrixrc    s    z!T":jE&:<MN>>mADEAz!T*BjE.BDUV&Mma'( 'N  	jr   c                 .   [        U 5      nX!::  a  U $ [        R                  " 5       nSn[        U5       HN  nXA:  a%  X   S:X  a  UR	                  [        S5      5        SnOUR	                  [        X   5      5        US-   nMP     UR                  5       $ )z'Break s in lines of size width (approx)r   rB  z<br />r   )r]  rQ  rR  rr  r  r   rS  )r   widthr  new_strwrh  s         r   insert_line_breaksrh    s    	QB	{kkmG	A2Y9MM!H+&AMM!AD'"E  r   r   ),T)r  r  )r]   r  r  )T)sysrQ  version_infomajorr   rp  z3constsz3corer.  r   
Z3_OP_TRUEZ3_OP_FALSEZ3_OP_EQr  	Z3_OP_ITEr   r   r   	Z3_OP_XOR	Z3_OP_NOTZ3_OP_IMPLIES
Z3_OP_IDIV	Z3_OP_MODZ3_OP_TO_REALZ3_OP_TO_INTr  Z3_OP_IS_INTr   r   
Z3_OP_BMUL	Z3_OP_BOR
Z3_OP_BAND
Z3_OP_BNOT
Z3_OP_BXOR
Z3_OP_BNEGZ3_OP_BUDIVZ3_OP_BSDIVZ3_OP_BSMODZ3_OP_BSREMZ3_OP_BUREMZ3_OP_EXT_ROTATE_LEFTZ3_OP_EXT_ROTATE_RIGHT
Z3_OP_SLEQ	Z3_OP_SLT
Z3_OP_SGEQ	Z3_OP_SGT
Z3_OP_ULEQ	Z3_OP_ULT
Z3_OP_UGEQ	Z3_OP_UGTr  r  r  Z3_OP_BASHR
Z3_OP_BSHLZ3_OP_BLSHRZ3_OP_CONCATr  Z3_OP_BV2INTr  r  Z3_OP_STOREr  Z3_OP_ARRAY_EXTr  r  r  r  r  Z3_OP_SEQ_CONCATZ3_OP_SEQ_PREFIXZ3_OP_SEQ_SUFFIXZ3_OP_SEQ_UNITZ3_OP_SEQ_CONTAINSZ3_OP_SEQ_REPLACEZ3_OP_SEQ_ATZ3_OP_SEQ_NTHZ3_OP_SEQ_INDEXZ3_OP_SEQ_LAST_INDEXZ3_OP_SEQ_LENGTHZ3_OP_STR_TO_INTZ3_OP_INT_TO_STRZ3_OP_SEQ_IN_REZ3_OP_SEQ_TO_REZ3_OP_RE_PLUSZ3_OP_RE_STARZ3_OP_RE_OPTIONZ3_OP_RE_UNIONZ3_OP_RE_RANGEZ3_OP_RE_INTERSECTZ3_OP_RE_COMPLEMENTZ3_OP_FPA_IS_NANZ3_OP_FPA_IS_INFZ3_OP_FPA_IS_ZEROZ3_OP_FPA_IS_NORMALZ3_OP_FPA_IS_SUBNORMALZ3_OP_FPA_IS_NEGATIVEZ3_OP_FPA_IS_POSITIVEr   r   r   	Z3_OP_MUL	Z3_OP_DIVZ3_OP_LEZ3_OP_LTZ3_OP_GEZ3_OP_GT	_z3_infixZ3_OP_UMINUS	_z3_unaryr>  Z3_OP_FPA_MULZ3_OP_FPA_DIVZ3_OP_FPA_REMZ3_OP_FPA_FMAr   r   Z3_OP_FPA_LEZ3_OP_FPA_LTZ3_OP_FPA_GEZ3_OP_FPA_GTZ3_OP_FPA_EQr   !Z3_OP_FPA_RM_NEAREST_TIES_TO_EVEN!Z3_OP_FPA_RM_NEAREST_TIES_TO_AWAYZ3_OP_FPA_RM_TOWARD_POSITIVEZ3_OP_FPA_RM_TOWARD_NEGATIVEZ3_OP_FPA_RM_TOWARD_ZEROr#  r"  r  r-  r,  Z3_OP_FPA_ABSZ3_OP_FPA_MINZ3_OP_FPA_MAXZ3_OP_FPA_SQRTZ3_OP_FPA_ROUND_TO_INTEGRALZ3_OP_FPA_FPZ3_OP_FPA_TO_FPZ3_OP_FPA_TO_FP_UNSIGNEDZ3_OP_FPA_TO_UBVZ3_OP_FPA_TO_SBVZ3_OP_FPA_TO_REALZ3_OP_FPA_TO_IEEE_BVr  r  rY  	frozensetr   r   r   r   r   r   r   r   r   _z3_infix_compactr  r(  _z3_pre_html_op_to_str_z3_html_infix_z3_html_unary_z3_pre_html_precedencer   r   r   r   rZ  r   r   r   r   r   r   r[  r   r   r   r   r   r   r   r   r  r  r&  r1  r@  rP  ra  rM  r  r3  rj  rl  rn  ru  rz  r}  r  	Exceptionr  r  r  r&  rI  rL  rO  rT  	_html_outrG  rH  r]  r_  r  rc  rh  r   r   r   <module>r     su    	 A     ccc dc J	c
 tc uc dc tc uc uc 9c c sc 8c  '!c" #c$ '%c& 'c( )c* +c, s-c. /c0 1c2 3c4 5c6 7c8 9c: ;c< =c> ?cB <CcD MEcH IcJ sKcL McN sOcR ScT uUcV WcX uYcZ I[c\ I]c` .acb ccd ecf gcj (kcl 9mcn (ocp Uqcr (sct ucv swcx Uyc| h}c~ yc@ AcB CcD EcH hIcJ jKcL jMcN FOcP 
QcR yScT $UcV 5WcX YYcZ -[c\ h]c^ j_c` jacd Vecf Tgch 6icj 6kcl Xmcn Gocp Gqcr sct ucx iycz i{c| z}c~ c@ O>>EcN iIy)ZQZ\gh(J
JiZJ	;Xb		 :z2	!$. q Q !+A 09! >H MXYZ ]hij q	 Q	 !+A	 0:1	
 
    q a 1 ' ,4Q 9A! FPQR q a "+A 09! 1 1 $Q )6q ;H1mQ!\1lA|QVW&%%'A%%'A% !"9% !"9	%
 1% (% *% 7% % )% 7% 7% 7% 7% 7%  7!%" 7#%$ 7%%& 7'%( 7)%* H+%,  !4-%0 &1%2 &3%4 &5%6 '7%8 '9%< &=%> X?%@ .A%B iC%D iE%F zG%H ,I% N%w0QSZ '+G g 	  3E	
 5
 .v
 8LV 3 &s -:3 ANs 3 &s & '\3dT`bf  =-,l  
=MBCC A2 
KJPY[fhst 	(C C G #W.6@Mx"F,4f>FPXZ` $Z %f	 /8	 BLV	 V_`f	
 %&8
 ;DEW %&8)EW$j%_%z:z%'=  X}iY[Ze  ';&%q)Q%q)Q%q)Q%q)Q$a$b#R("	. $W 

 
BJrN 
BJrN  B!r $
,
$

)
  
B	r	Br  !B		#Br !  
B		B   "B	 	$B  " 
BOB 
BOB 
BOB 
BOB )
)
&.
 @| :* :(') ' ,%L %"@ @
%&1#)LX i  
@ @F	 	DGaI GaT 	d[
4 	!#  t !
1r   