+
    ÖÇÜhÓÉ  ã                   óÌ  € ^ RI t ^ RIHt ^ RIHt ^ RIHtHtHtH	t	H
t
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIH t   ! R R]4      t! ! R R	]4      t" ! R
 R4      t# ! R R]#]4      t$R t% ! R R]#]4      t& ! R R]&]4      t' ! R R]&]4      t( ! R R]']4      t) ! R R]&]4      t* ! R R]#]4      t+ ! R R]#]4      t, ! R R]#]4      t- ! R R ]#]4      t. ! R! R"].]4      t/ ! R# R$]/]4      t0 ! R% R&].]4      t1 ! R' R(]/4      t2 ! R) R*]#]
4      t3R+ t4 ! R, R-]5]#]4      t6 ! R. R/]74      t8. 3R0 lt9 ! R1 R24      t:R3 t;R4 t<]=R58X  d
   ];! 4        R# R# )6é    N)Úreduce)Úchain)ÚAPPÚAbstractVariableExpressionÚAllExpressionÚAndExpressionÚApplicationExpressionÚBinaryExpressionÚBooleanExpressionÚConstantExpressionÚEqualityExpressionÚEventVariableExpressionÚExistsExpressionÚ
ExpressionÚFunctionVariableExpressionÚImpExpressionÚIndividualVariableExpressionÚLambdaExpressionÚLogicParserÚNegatedExpressionÚOrExpressionÚTokensÚVariableÚis_eventvarÚ
is_funcvarÚ	is_indvarÚunique_variable)Úin_idlec                   ó–   € ] tR t^+tRtRtRtRtRtRt	]]]]	.t
]P                  ]
,           t]P                  ].,           ]
,           tRtR# )	Ú	DrtTokensÚDRSÚ+ÚPROÚ[Ú]Ú:© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   ÚDRS_CONCÚPRONOUNÚOPEN_BRACKETÚCLOSE_BRACKETÚCOLONÚPUNCTr   ÚSYMBOLSÚTOKENSÚ__static_attributes__r'   ó    Ú./usr/lib/python3/dist-packages/nltk/sem/drt.pyr    r    +   sQ   † Ø
€CØ€HØ€GØ€LØ€MØ€Eà�| ]°EÐ:€Eà�n‰n˜uÕ$€Gà�]‰]˜c˜UÕ" UÕ*„Fr5   r    c                   ó~   a € ] tR t^:t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tRtV tR# )Ú	DrtParserz$A lambda calculus expression parser.c                ó¨  € \         P                  ! V 4       \        \        P                   Uu. uF  q^3NK  	  up\        P
                   Uu. uF  q^3NK  	  up,           \        ^3.,           \        P                  \        P                  ,            Uu. uF  q^3NK  	  up,           \        P                  ^3.,           \        P                  ^3.,           \        P                   Uu. uF  q^3NK  	  up,           \        P                   Uu. uF  q^3NK  	  up,           R.,           4      V n        R# u upi u upi u upi u upi u upi )é   N)Né	   )r   Ú__init__Údictr    ÚLAMBDA_LISTÚNOT_LISTr   ÚEQ_LISTr   ÚNEQ_LISTr0   r,   ÚOR_LISTÚIMP_LISTÚoperator_precedence)ÚselfÚxs   & r6   r<   ÚDrtParser.__init__=   s&  € Ü×Ò˜TÔ"ä#'Ü&×2Ò2Ó3Ñ2˜�‹VÑ2Ñ3Ü(×1Ò1Ó2Ñ1˜!�1‹vÑ1Ñ2õ3ä�Qˆxˆjõô  )×0Ñ0´6·?±?ÖBÓCÑB˜!�1‹vÑBÑCõDô —‘ Ð#Ð$õ	%ô
 ×"Ñ" AÐ&Ð'õ(ô  )×0Ò0Ó1Ñ0˜!�1‹vÑ0Ñ1õ2ô  )×1Ò1Ó2Ñ1˜!�1‹vÑ1Ñ2õ3ð ˆkõó
$
ˆÖ ùÚ3ùÚ2ùâCùò 2ùÚ2s   ®D;ÁE 
ÂE
Ã-E

ÄE
c                ó"   € \         P                  # )z#This method exists to be overridden)r    r2   ©rE   s   &r6   Úget_all_symbolsÚDrtParser.get_all_symbolsL   s   € ä× Ñ Ð r5   c                ó(   € V\         P                  9  # ©N)r    r3   )rE   Útoks   &&r6   Ú
isvariableÚDrtParser.isvariableP   s   € Øœ)×*Ñ*Ñ*Ð*r5   c                ó  € V\         P                  9   d   V P                  W4      # V\         P                  9   d   V P	                  W4      # V\         P
                  8X  d^   V P                  ^ 4      '       d6   V P                  ^ 4      \         P                  8X  d   V P                  W4      # V P                  W4      # VP                  4       \         P                  8X  d1   V P                  \         P
                  4       V P                  W4      # V P                  V4      '       d^   V P                  ^ 4      '       d6   V P                  ^ 4      \         P                  8X  d   V P!                  W4      # V P#                  W4      # R# )z_This method is intended to be overridden for logics that
use different operators or expressionsN)r    r?   Úhandle_negationr>   Úhandle_lambdaÚOPENÚinRangeÚtokenr.   Ú
handle_DRSÚhandle_openÚupperr!   ÚassertNextTokenrO   r0   Úhandle_propÚhandle_variable)rE   rN   Úcontexts   &&&r6   ÚhandleÚDrtParser.handleS   s  € ð ”)×$Ñ$Ô$Ø×'Ñ'¨Ó5Ð5à”I×)Ñ)Ô)Ø×%Ñ% cÓ3Ð3à”I—N‘NÔ"Ø�|‰|˜A�Š 4§:¡:¨a£=´I×4JÑ4JÔ#JØ—‘ sÓ4Ð4à×'Ñ'¨Ó5Ð5à�Y‰Y‹[œIŸM™MÔ)Ø× Ñ ¤§¡Ô0Ø—?‘? 3Ó0Ð0à�_‰_˜S×!Ò!Ø�|‰|˜A�Š 4§:¡:¨a£=´I·O±OÔ#CØ×'Ñ'¨Ó5Ð5à×+Ñ+¨CÓ9Ð9ñ	 "r5   c                ó   € \        V4      # rM   ©ÚDrtNegatedExpression)rE   Ú
expressions   &&r6   Úmake_NegatedExpressionÚ DrtParser.make_NegatedExpressionl   s   € Ü# JÓ/Ð/r5   c                ó0  € V P                  4       pV P                  ^ 4      '       d5   V P                  ^ 4      \        P                  8X  d   V P                  4        V P                  V4      pV P                  \        P                  4       \        W4R4      # )r   N)	Úhandle_refsrU   rV   r    ÚCOMMAÚhandle_condsrZ   ÚCLOSEr!   )rE   rN   r]   ÚrefsÚcondss   &&&  r6   rW   ÚDrtParser.handle_DRSo   sh   € à×ÑÓ!ˆà�L‰L˜�OŠO §
¡
¨1£´·±Ô @à�J‰JŒLØ×!Ñ! 'Ó*ˆØ×ÑœYŸ_™_Ô-Ü�4 Ó%Ð%r5   c                ó¸  € V P                  \        P                  4       . pV P                  ^ 4      '       dƒ   V P	                  ^ 4      \        P
                  8w  d_   V'       d5   V P	                  ^ 4      \        P                  8X  d   V P	                  4        VP                  V P                  R4      4       K™  V P                  \        P
                  4       V# )r   Ú
quantified)	rZ   r    r.   rU   rV   r/   rh   ÚappendÚget_next_token_variable)rE   rk   s   & r6   rg   ÚDrtParser.handle_refsz   sŒ   € Ø×ÑœY×3Ñ3Ô4ØˆØ�l‰l˜1�oŠo $§*¡*¨Q£-´9×3JÑ3JÔ"Jç˜Ÿ
™
 1›¬¯©Ô8Ø—
‘
”Ø�K‰K˜×4Ñ4°\ÓBÖCØ×ÑœY×4Ñ4Ô5Øˆr5   c                ó¸  € V P                  \        P                  4       . pV P                  ^ 4      '       dƒ   V P	                  ^ 4      \        P
                  8w  d_   V'       d5   V P	                  ^ 4      \        P                  8X  d   V P	                  4        VP                  V P                  V4      4       K™  V P                  \        P
                  4       V# ©r   )	rZ   r    r.   rU   rV   r/   rh   rp   Úprocess_next_expression)rE   r]   rl   s   && r6   ri   ÚDrtParser.handle_conds…   sŒ   € Ø×ÑœY×3Ñ3Ô4ØˆØ�l‰l˜1�oŠo $§*¡*¨Q£-´9×3JÑ3JÔ"Jç˜Ÿ™ A›¬)¯/©/Ô9Ø—
‘
”Ø�L‰L˜×5Ñ5°gÓ>Ö?Ø×ÑœY×4Ñ4Ô5Øˆr5   c                óš   € V P                  V4      pV P                  R 4       V P                  \        P                  4      p\        W44      # )r&   )Úmake_VariableExpressionrZ   ru   r    r0   ÚDrtProposition)rE   rN   r]   ÚvariableÚdrss   &&&  r6   r[   ÚDrtParser.handle_prop�   s?   € Ø×/Ñ/°Ó4ˆØ×Ñ˜SÔ!Ø×*Ñ*¬9¯?©?Ó;ˆÜ˜hÓ,Ð,r5   c                ó   € \        W4      # )zdThis method serves as a hook for other logic parsers that
have different equality expression classes©ÚDrtEqualityExpression©rE   ÚfirstÚseconds   &&&r6   Úmake_EqualityExpressionÚ!DrtParser.make_EqualityExpression–   s   € ô % UÓ3Ð3r5   c                ó    € V\         P                  8X  d   R # V\         P                  9   d   \        # V\         P                  9   d   R pV# R# )zZThis method serves as a hook for other logic parsers that
have different boolean operatorsc                 ó   € \        WR 4      # rM   ©ÚDrtConcatenation©r�   r‚   s   &&r6   Ú<lambda>Ú9DrtParser.get_BooleanExpression_factory.<locals>.<lambda>Ÿ   s   € Ô)9¸%ÈÔ)Nr5   c                 óô   € \        V \        4      '       d"   \        V P                  V P                  V4      # \        V \        4      '       d"   \	        V P
                  V P                  V4      # \        R 4      h©z'Antecedent of implication must be a DRS)Ú
isinstancer!   rk   rl   rˆ   r�   r‚   Ú	Exceptionr‰   s   &&r6   Úmake_imp_expressionÚDDrtParser.get_BooleanExpression_factory.<locals>.make_imp_expression¤   sW   € Ü˜e¤S×)Ò)Ü˜uŸz™z¨5¯;©;¸Ó?Ð?Ü˜eÔ%5×6Ò6Ü+¨E¯K©K¸¿¹ÀvÓNÐNÜÐ IÓJÐJr5   N)r    r,   rB   ÚDrtOrExpressionrC   )rE   rN   r�   s   && r6   Úget_BooleanExpression_factoryÚ'DrtParser.get_BooleanExpression_factory›   sK   € ð ”)×$Ñ$Ô$ÙNÐNØ”I×%Ñ%Ô%Ü"Ð"Ø”I×&Ñ&Ô&òKð 'Ð&ár5   c                ó   € V! W#4      # rM   r'   )rE   Úfactoryr�   r‚   s   &&&&r6   Úmake_BooleanExpressionÚ DrtParser.make_BooleanExpression¯   s   € Ù�uÓ%Ð%r5   c                ó   € \        W4      # rM   ©ÚDrtApplicationExpression)rE   ÚfunctionÚarguments   &&&r6   Úmake_ApplicationExpressionÚ$DrtParser.make_ApplicationExpression²   s   € Ü'¨Ó;Ð;r5   c                ó*   € \        \        V4      4      # rM   )ÚDrtVariableExpressionr   )rE   Únames   &&r6   rx   Ú!DrtParser.make_VariableExpressionµ   s   € Ü$¤X¨d£^Ó4Ð4r5   c                ó   € \        W4      # rM   )ÚDrtLambdaExpression)rE   Ú	variablesÚterms   &&&r6   Úmake_LambdaExpressionÚDrtParser.make_LambdaExpression¸   s   € Ü" 9Ó3Ð3r5   )rD   N)r(   r)   r*   r+   Ú__doc__r<   rJ   rO   r^   rd   rW   rg   ri   r[   rƒ   r“   r—   rž   rx   r¨   r4   Ú__classdictcell__©Ú__classdict__s   @r6   r8   r8   :   sX   ø‡ € Ù.ò
ò!ò+ò:ò20ò	&ò	ò	ò-ò4ò
ò(&ò<ò5÷4ð 4r5   r8   c                   óÄ   a € ] tR t^¼t o Rt]! 4       t]R 4       tR t	R t
R tR tR tRR	 lt]R
 4       tRR ltR tRR ltR tR tR tR tR tR tR tR tRtV tR# )ÚDrtExpressionzS
This is the base abstract DRT Expression from which every DRT
Expression extends.
c                ó8   € V P                   P                  V4      # rM   )Ú_drt_parserÚparse)ÚclsÚss   &&r6   Ú
fromstringÚDrtExpression.fromstringÄ   s   € à�‰×$Ñ$ QÓ'Ð'r5   c                ó   € \        W4      # rM   rš   ©rE   Úothers   &&r6   ÚapplytoÚDrtExpression.applytoÈ   s   € Ü'¨Ó4Ð4r5   c                ó   € \        V 4      # rM   ra   rI   s   &r6   Ú__neg__ÚDrtExpression.__neg__Ë   s   € Ü# DÓ)Ð)r5   c                ó   € \         # rM   )ÚNotImplementedr¸   s   &&r6   Ú__and__ÚDrtExpression.__and__Î   s   € ÜÐr5   c                óH   € \        V\        4      '       g   Q h\        W4      # rM   )rŽ   r¯   r’   r¸   s   &&r6   Ú__or__ÚDrtExpression.__or__Ñ   s    € Ü˜%¤×/Ò/Ð/Ð/Ü˜tÓ+Ð+r5   c                ó$  € \        V\        4      '       g   Q h\        V \        4      '       d"   \        V P                  V P                  V4      # \        V \
        4      '       d"   \        V P                  V P                  V4      # \        R 4      hr�   )	rŽ   r¯   r!   rk   rl   rˆ   r�   r‚   r�   r¸   s   &&r6   Ú__gt__ÚDrtExpression.__gt__Õ   sj   € Ü˜%¤×/Ò/Ð/Ð/Ü�dœC× Ò Ü�t—y‘y $§*¡*¨eÓ4Ð4Ü�dÔ,×-Ò-Ü# D§J¡J°·±¸UÓCÐCÜÐAÓBÐBr5   Nc                óÌ   € \        V\        4      '       g   Q hV P                  4       P                  4       pVP                  4       P                  4       pVP	                  WB4      # )a  
Check for logical equivalence.
Pass the expression (self <-> other) to the theorem prover.
If the prover says it is valid, then the self and other are equal.

:param other: an ``DrtExpression`` to check equality against
:param prover: a ``nltk.inference.api.Prover``
)rŽ   r¯   ÚsimplifyÚfolÚequiv)rE   r¹   ÚproverÚf1Úf2s   &&&  r6   rÌ   ÚDrtExpression.equivÝ   sO   € ô ˜%¤×/Ò/Ð/Ð/à�]‰]‹_× Ñ Ó"ˆØ�^‰^Ó×!Ñ!Ó#ˆØ�x‰x˜Ó#Ð#r5   c                óN   € \        R V P                  P                  ,          4      h)z#'%s' object has no attribute 'type')ÚAttributeErrorÚ	__class__r(   rI   s   &r6   ÚtypeÚDrtExpression.typeì   s!   € äØ1°D·N±N×4KÑ4KÕKó
ð 	
r5   c                ó   € \        4       hrM   ©ÚNotImplementedError)rE   Ú	signatures   &&r6   Ú	typecheckÚDrtExpression.typecheckò   s   € Ü!Ó#Ð#r5   c                ó   € \        WR 4      # rM   r‡   r¸   s   &&r6   Ú__add__ÚDrtExpression.__add__õ   s   € Ü ¨TÓ2Ð2r5   c                ó   € \        4       h)zœ
Return the set of discourse referents in this DRS.
:param recursive: bool Also find discourse referents in subterms?
:return: list of ``Variable`` objects
r×   ©rE   Ú	recursives   &&r6   Úget_refsÚDrtExpression.get_refsø   s   € ô "Ó#Ð#r5   c                ó  € \        V \        4      ;'       dv    \        V P                  \        4      ;'       dT    V P                  P                  P
                  \        P                  8H  ;'       d    \        V P                  \        4      # )zIs self of the form "PRO(x)"?)
rŽ   r›   rœ   ÚDrtAbstractVariableExpressionrz   r¢   r    r-   r�   ÚDrtIndividualVariableExpressionrI   s   &r6   Úis_pronoun_functionÚ!DrtExpression.is_pronoun_function   sv   € ô �tÔ5Ó6÷ Kð KÜ˜4Ÿ=™=Ô*GÓH÷Kð Kà—‘×&Ñ&×+Ñ+¬y×/@Ñ/@Ñ@÷Kð Kô ˜4Ÿ=™=Ô*IÓJð		
r5   c                ó   € \        W4      # rM   r~   r€   s   &&&r6   rƒ   Ú%DrtExpression.make_EqualityExpression	  s   € Ü$ UÓ3Ð3r5   c                ó   € \        V4      # rM   )r¡   )rE   rz   s   &&r6   rx   Ú%DrtExpression.make_VariableExpression  s   € Ü$ XÓ.Ð.r5   c                ó   € \        V 4      # rM   )Úresolve_anaphorarI   s   &r6   rî   ÚDrtExpression.resolve_anaphora  s   € Ü Ó%Ð%r5   c                ó<   € V P                  R  V P                  4      # )c                 ó"   € V P                  4       # rM   )Úeliminate_equality)Úes   &r6   rŠ   Ú2DrtExpression.eliminate_equality.<locals>.<lambda>  s   € ¨q×/CÑ/CÔ/Er5   )Úvisit_structuredrÓ   rI   s   &r6   rò   Ú DrtExpression.eliminate_equality  s   € Ø×$Ñ$Ñ%EÀtÇ~Á~ÓVÐVr5   c                ó@   € RP                  V P                  4       4      # )z/
Draw the DRS
:return: the pretty print string
Ú
)ÚjoinÚ_prettyrI   s   &r6   Úpretty_formatÚDrtExpression.pretty_format  s   € ð
 �y‰y˜Ÿ™›Ó(Ð(r5   c                ó8   € \        V P                  4       4       R # rM   )Úprintrû   rI   s   &r6   Úpretty_printÚDrtExpression.pretty_print  s   € Üˆd× Ñ Ó"Ö#r5   c                ó8   € \        V 4      P                  4        R # rM   )Ú	DrsDrawerÚdrawrI   s   &r6   r  ÚDrtExpression.draw  s   € Ü�$‹×ÑÖr5   r'   rM   ©F)r(   r)   r*   r+   rª   r8   r±   Úclassmethodrµ   rº   r½   rÁ   rÄ   rÇ   rÌ   ÚpropertyrÔ   rÚ   rÝ   râ   rç   rƒ   rx   rî   rò   rû   rÿ   r  r4   r«   r¬   s   @r6   r¯   r¯   ¼   s•   ø‡ € ññ
 “+€Kàñ(ó ð(ò5ò*òò,òCô$ð ñ
ó ð
ô
$ò3ô$ò
ò4ò/ò&òWò)ò$÷ð r5   r¯   c                   ó–   a € ] tR tRt o RtRR ltRR ltR tRR ltR t	R	 t
R
 tR tR tR tR tR t]P$                  tR tRtV tR# )r!   i#  z%A Discourse Representation Structure.Nc                ó*   € Wn         W n        W0n        R# )z’
:param refs: list of ``DrtIndividualVariableExpression`` for the
    discourse referents
:param conds: list of ``Expression`` for the conditions
N)rk   rl   Ú
consequent)rE   rk   rl   r
  s   &&&&r6   r<   ÚDRS.__init__&  s   € ð Œ	ØŒ
Ø$Žr5   c                ó¾  € WP                   9   dÊ   V'       g   V # V P                   P                  V4      pV P                  '       d   V P                  P                  WRV4      pMRp\	        V P                   RV VP
                  .,           V P                   V^,           R ,           V P                   Uu. uF  pVP                  WRV4      NK  	  upV4      # V'       dý   \        V P                   4      VP                  4       ,           FÎ  p\        V4      p	\        V	4      p
V P                   P                  V4      pV P                  '       d   V P                  P                  WŠRV4      pMRp\	        V P                   RV V	.,           V P                   V^,           R ,           V P                   Uu. uF  pVP                  WŠRV4      NK  	  upV4      p KÐ  	  V P                  '       d   V P                  P                  WW44      pMRp\	        V P                   V P                   Uu. uF  pVP                  WW44      NK  	  upV4      # u upi u upi u upi )úWReplace all instances of variable v with expression E in self,
where v is free in self.TN)rk   Úindexr
  Úreplacer!   rz   rl   ÚsetÚfreer   r¡   )rE   rz   rc   Úreplace_boundÚalpha_convertÚir
  ÚcondÚrefÚnewvarÚnewvarexs   &&&&&      r6   r  ÚDRS.replace0  s   € ð —y‘yÔ ç Ø�à—I‘I—O‘O HÓ-�Ø—?—?�?Ø!%§¡×!8Ñ!8Ø ¨d°Mó"‘Jð "&�JÜØ—I‘I˜b˜q�M Z×%8Ñ%8Ð$9Õ9¸D¿I¹IÀaÈ!ÅeÀgÐ<NÕNð %)§J¢Jóá$.˜Dð Ÿ™ X¸4ÀÖOÙ$.ñð óð ÷ ô ˜tŸy™y›>¨J¯O©OÓ,=×=Ð=�CÜ,¨SÓ1�FÜ4°VÓ<�HØŸ	™	Ÿ™¨Ó,�AØ——�Ø%)§_¡_×%<Ñ%<Ø¨4°ó&™
ð &*˜
ÜØŸ	™	 " 1˜¨¨Õ0°4·9±9¸QÀ½U¸WÐ3EÕEð )-¯
ª
óá(2 ð !ŸL™L¨¸¸mÖLÙ(2ñð #ó’Dñ >ð( ��ˆØ!Ÿ_™_×4Ñ4Ø¨-ó‘
ð "�
ÜØ—	‘	ð !%§
¢
óá *˜ð —L‘L °}ÖTÙ *ñð óð ùòIùò,ùò s   Â6I
Æ6IÈ-I
c                óN  € \        \        P                  V P                   Uu. uF  qP	                  4       NK  	  up\        4       4      pV P                  '       d*   VP                  V P                  P	                  4       4       V\        V P                  4      ,
          # u upi )z:see: Expression.free())	r   ÚoperatorÚor_rl   r  r  r
  Úupdaterk   )rE   ÚcÚ
conds_frees   &  r6   r  ÚDRS.freen  sj   € äœHŸL™L¸T¿ZºZÓ*H¹Z¸¯6©6®8¹ZÑ*HÌ#Ë%ÓPˆ
Ø�?�?ˆ?Ø×Ñ˜dŸo™o×2Ñ2Ó4Ô5ØœC §	¡	›NÕ*Ð*ùò +Is   £B"
c                ó(  € V'       d€   V P                   \        \        P                  ! R V P                   4       4      4      ,           pV P
                  '       d+   VP                  V P
                  P                  R4      4       V# V P                   # )ú#:see: AbstractExpression.get_refs()c              3   óB   "  € T F  qP                  R 4      x € K  	  R# 5i©TN)râ   )Ú.0r  s   & r6   Ú	<genexpr>ÚDRS.get_refs.<locals>.<genexpr>y  s   é € Ð#I¹j¸§J¡J¨t×$4Ð$4»jùs   ‚T)rk   Úlistr   Úfrom_iterablerl   r
  Úextendrâ   )rE   rá   Ú
conds_refss   && r6   râ   ÚDRS.get_refsu  sj   € çØŸ™¤TÜ×#Ò#Ñ#I¸d¿jºjÓ#IÓIó&õ ˆJð ��ˆØ×!Ñ! $§/¡/×":Ñ":¸4Ó"@ÔAØÐà—9‘9Ðr5   c                ó´   € \        \        WP                  4      4      pV P                  '       d"   VP	                  V! V P                  4      4       V! V4      # ©z:see: Expression.visit())r(  Úmaprl   r
  rp   )rE   rœ   Ú
combinatorÚpartss   &&& r6   ÚvisitÚ	DRS.visit�  s>   € ä”S˜§:¡:Ó.Ó/ˆØ�?�?ˆ?Ø�L‰L™ $§/¡/Ó2Ô3Ù˜%Ó Ð r5   c           	     ó®   € V P                   '       d   V! V P                   4      MRpV! V P                  \        \        WP                  4      4      V4      # )ú#:see: Expression.visit_structured()N)r
  rk   r(  r/  rl   )rE   rœ   r0  r
  s   &&& r6   rõ   ÚDRS.visit_structuredˆ  s;   € à26·/·/°/‘X˜dŸo™oÔ.Àtˆ
Ù˜$Ÿ)™)¤T¬#¨h¿
¹
Ó*CÓ%DÀjÓQÐQr5   c                ó¤  € T p^ pV\        VP                  4      8  Ed[   VP                  V,          p\        V\        4      '       Ed%   \        VP                  \
        4      '       Ed   \        VP                  \
        4      '       dä   \        \        \        VP                  4      VP                  P                  0,
          4      VP                  RV VP                  V^,           R ,           VP                  4      pVP                  P                  VP                  P                  8w  d5   VP                  VP                  P                  VP                  RR4      p^ pV^,          pV^,          pEKu  . pVP                   F‚  pVP                  4       pVP                  4       p\        V\        4      '       d9   VP                  '       g'   VP                  '       g   VP                  '       g   Kq  VP!                  V4       K„  	  VP                  '       d   VP                  P                  4       MRp\        VP                  WG4      # )r   NF)Úlenrl   rŽ   r   r�   r   r‚   r!   r(  r  rk   rz   r
  r  rò   rÊ   rp   )rE   r{   r  r  rl   Únew_condÚnew_cond_simpr
  s   &       r6   rò   ÚDRS.eliminate_equality�  s£  € ØˆØˆØ”#�c—i‘i“.Õ Ø—9‘9˜Q•<ˆDä˜4Ô!3×4Ó4Ü˜tŸz™zÔ+E×FÓFÜ˜tŸ{™{Ô,F×GÒGäÜœ˜SŸX™X›¨$¯+©+×*>Ñ*>Ð)?Õ?Ó@Ø—I‘I˜b˜q�M C§I¡I¨a°!­e¨gÐ$6Õ6Ø—N‘Nó�ð
 —;‘;×'Ñ'¨4¯:©:×+>Ñ+>Ô>ØŸ+™+ d§k¡k×&:Ñ&:¸D¿J¹JÈÈuÓU�CØ�AØ�Q•�Ø��F‹AàˆØ—I”IˆDØ×.Ñ.Ó0ˆHØ$×-Ñ-Ó/ˆMä˜}¬c×2Ò2Ø ×%×%Ð%Ø ×&×&Ð&Ø ×+×+Ò+à—‘˜XÖ&ñ ð =@¿N¿N¸N�S—^‘^×6Ñ6Ô8ÐPTˆ
Ü�3—8‘8˜UÓ/Ð/r5   c                óæ  € V P                   '       d¼   R pV P                  '       d8   \        \        V P                   Uu. uF  q"P	                  4       NK  	  up4      pV'       d%   \        WP                   P	                  4       4      pMV P                   P	                  4       pV P                  R R R1,           F  p\        W14      pK  	  V# V P                  '       g   \        R4      h\        \        V P                   Uu. uF  q"P	                  4       NK  	  up4      p\        \        V P                  V P                  4      R R R1,          4       F  p\        W14      pK  	  V# u upi u upi )Nz-Cannot convert DRS with no conditions to FOL.éÿÿÿÿ)r
  rl   r   r   rË   r   rk   r   r�   r/  r   Ú_order_ref_stringsr   )rE   Úaccumr  r  s   &   r6   rË   ÚDRS.fol±  s  € Ø�?�?ˆ?ØˆEØ�z�zˆzÜœ}ÀÇ
Â
Ó.KÁ
¸1¯u©u®wÁ
Ñ.KÓL�çÜ% e¯_©_×-@Ñ-@Ó-BÓC‘àŸ™×+Ñ+Ó-�à—y‘y¡ 2 —��Ü% cÓ1’ñ 'ð ˆLð —:—:�:ÜÐ OÓPÐPÜœ=¸D¿JºJÓ*G¹J°q¯5©5®7¹JÑ*GÓHˆEÜœ8 T×%<Ñ%<¸T¿Y¹YÓ%GÉÈ"ÈÕ%MÖN�Ü(¨Ó4’ñ OàˆLùò% /Lùò +Hs   ¿E)
ÄE.
c           	     óV  € R P                  V P                  V P                  4      4      pV P                   Uu. uF  p\	        R VP                  4       4      NK   	  up UUu. uF  pV F  pVNK  	  K  	  ppp\        \        V4      .\        \        \        V4      4      ,           4      pRRV,          ,           R,           RVP                  V4      ,           R,           RRV,          ,           R	,           .V Uu. uF"  pRVP                  V4      ,           R,           NK$  	  up,           R
RV,          ,           R,           .,           pV P                  '       d>   \        P                  V\        P                  V P                  P                  4       4      # V# u upi u uppi u upi )Ú c                 ó"   € V P                  4       # rM   )Ústrip)r´   s   &r6   rŠ   ÚDRS._pretty.<locals>.<lambda>Ï  s
   €  §¡¤r5   z _Ú_z_ z| z |z|-Ú-z-|z|_z_|)rù   r>  rk   rl   Úfilterrú   Úmaxr8  r(  r/  Úljustr
  ÚDrtBinaryExpressionÚ_assemble_prettyr    ÚIMP)rE   Ú	refs_liner  Ú	cond_lineÚ
cond_linesÚlengthÚliner{   s   &       r6   rú   ÚDRS._prettyÉ  s  € Ø—H‘H˜T×4Ñ4°T·Y±YÓ?Ó@ˆ	ð
 IMÏ
Ê
óÙHRÀ”Ñ*¨D¯L©L«NÖ;É
òô
ñ�	ó "�ó	 ñ "ñ	 ñð 	ñ 
ô ”c˜)“nÐ%¬¬S´°jÓ-AÓ(BÕBÓCˆð �s˜V•|Õ# dÕ*Ø�y—‘ vÓ.Õ.°Õ5Ø�s˜V•|Õ# dÕ*ðñ
 =GÓG¹J°Dˆt�d—j‘j Ó(Õ(¨4×/Ð/¹JÑGõHð �c˜F•lÕ" TÕ)Ð*õ+ð 	ð �?�?ˆ?Ü&×7Ñ7Ø”Y—]‘] D§O¡O×$;Ñ$;Ó$=óð ð ˆ
ùò'ùó
ùò Hs   ¹$FÁ#F Ã<(F&c                óà  € V Uu. uF  pR V,          NK  	  pp. p. p. p. pV F€  p\        V4      '       d   VP                  V4       K'  \        V4      '       d   VP                  V4       KK  \        V4      '       d   VP                  V4       Ko  VP                  V4       K‚  	  \	        V4      \	        VR R7      ,           \	        VR R7      ,           \	        VR R7      ,           # u upi )ú%sc                 ó^   € \        V R ,          R.\        V R ,          4      ^ 8H  ,          4      # )ºé   NNr=  ©Úintr8  ©Úvs   &r6   rŠ   Ú(DRS._order_ref_strings.<locals>.<lambda>ô  s"   € ¬s°A°bµE¸2°;¼sÀ1ÀRÅ5»zÈQ¹Õ3OÔ/Pr5   )Úkeyc                 óp   € V ^ ,          \        V R,          R.\        V R,          4      ^ 8H  ,          4      3# ©r   :r:   NNr=  rY  r[  s   &r6   rŠ   r]  õ  s,   € ¨q°­t´S¸!¸B½%À¸ÄSÈÈ2ÍÃZÐSTÁ_Õ9UÓ5VÑ.Wr5   c                 óp   € V ^ ,          \        V R,          R.\        V R,          4      ^ 8H  ,          4      3# r`  rY  r[  s   &r6   rŠ   r]  ö  s,   € ¨a°­d´C¸¸2½À¸ÄCÈÈ"ÍÃJÐRSÁOÕ8TÓ4UÑ-Vr5   )r   rp   r   r   Úsorted)	rE   rk   r  ÚstringsÚind_varsÚ	func_varsÚ
event_varsÚ
other_varsr´   s	   &&       r6   r>  ÚDRS._order_ref_stringsã  sÔ   € Ù)-Ó.© #�4˜#—:�:©ˆÐ.ØˆØˆ	Øˆ
Øˆ
ÛˆAÜ˜�|Š|Ø—‘ Ö"Ü˜A—’Ø× Ñ  Ö#Ü˜Q—’Ø×!Ñ! !Ö$à×!Ñ! !Ö$ñ ô �:ÓÜ�ZÑ%PÔQõRä�YÑ$WÔXõYô �XÑ#VÔWõXð	
ùò /s   …C+c                ó   € \        V\        4      '       dø   \        V P                  4      \        VP                  4      8X  dË   Tp\	        V P                  VP                  4       F(  w  r4V P                  V4      pVP                  WER4      pK*  	  V P                  VP                  8X  db   \        V P                  4      \        VP                  4      8X  d5   \	        V P                  VP                  4       F  w  rgWg8X  d   K   R# 	  R# R# ©zuDefines equality modulo alphabetic variance.
If we are comparing \x.M  and \y.N, then check equality of M and N[x/y].TF)	rŽ   r!   r8  rk   Úziprx   r  r
  rl   )rE   r¹   Úconverted_otherÚr1Úr2ÚvarexÚc1Úc2s   &&      r6   Ú__eq__Ú
DRS.__eq__ù  sÕ   € ô �eœS×!Ò!Ü�4—9‘9‹~¤ U§Z¡Z£Ô0Ø"'�Ü! $§)¡)¨_×-AÑ-AÖB‘F�BØ ×8Ñ8¸Ó<�EØ&5×&=Ñ&=¸bÈÓ&N’Oñ Cð —?‘? o×&@Ñ&@Ô@ÄSØ—J‘JóFä˜×.Ñ.Ó/ôF0ô #& d§j¡j°/×2GÑ2GÖ"H™˜Ø "¦Ú#(ñ #Iñ  Ùr5   c                ó   € W8X  * # rM   r'   r¸   s   &&r6   Ú__ne__Ú
DRS.__ne__  ó   € ØÒ Ð r5   c                ó¬  € R P                  RP                  V P                  V P                  4      4      RP                  R V P                   4       4      4      pV P
                  '       dh   \        P                  V,           R,           \        P                  ,           R,           RV P
                  ,          ,           \        P                  ,           # V# )z([{}],[{}])Ú,ú, c              3   ó4   "  € T F  pR V,          x € K  	  R# 5i©rU  Nr'   )r%  r  s   & r6   r&  ÚDRS.__str__.<locals>.<genexpr>  s   é € Ð9©j d�d˜T—k’k«jùó   ‚rB  rU  )
Úformatrù   r>  rk   rl   r
  r    rT   rM  rj   ©rE   r{   s   & r6   Ú__str__ÚDRS.__str__  sª   € Ø×"Ñ"Ø�H‰H�T×,Ñ,¨T¯Y©YÓ7Ó8Ø�I‰IÑ9¨d¯jªjÓ9Ó9ó
ˆð �?�?ˆ?ä—‘Øõàõô —-‘-õ ð õ	ð
 ˜Ÿ™Õ(õ)ô —/‘/õ"ðð ˆ
r5   )rl   r
  rk   rM   ©FTr  )r(   r)   r*   r+   rª   r<   r  r  râ   r2  rõ   rò   rË   rú   r>  rr  ru  r   Ú__hash__r�  r4   r«   r¬   s   @r6   r!   r!   #  s^   ø‡ € Ù/ô%ô<ò|+ô
ò!òRò
"0òHò0ò4
ò,ò$!ð ×"Ñ"€H÷ð r5   r!   c                óü   € \        V P                  4      '       d   \        V 4      # \        V P                  4      '       d   \	        V 4      # \        V P                  4      '       d   \        V 4      # \        V 4      # )z‹
This is a factory method that instantiates and returns a subtype of
``DrtAbstractVariableExpression`` appropriate for the given variable.
)r   r¢   ræ   r   ÚDrtFunctionVariableExpressionr   ÚDrtEventVariableExpressionÚDrtConstantExpression)rz   s   &r6   r¡   r¡   "  s]   € ô
 �—‘×ÒÜ.¨xÓ8Ð8Ü	�H—M‘M×	"Ò	"Ü,¨XÓ6Ð6Ü	�X—]‘]×	#Ò	#Ü)¨(Ó3Ð3ä$ XÓ.Ð.r5   c                   ó<   a € ] tR tRt o R tRR ltR tR tRtV t	R# )	rå   i1  c                ó   € V # rM   r'   rI   s   &r6   rË   Ú!DrtAbstractVariableExpression.fol2  ó   € Øˆr5   c                ó   € . # ©r"  r'   rà   s   &&r6   râ   Ú&DrtAbstractVariableExpression.get_refs5  s   € àˆ	r5   c                ó@   € R V ,          pR\        V4      ,          pW"W.# ©rU  rB  ©r8  ©rE   r´   Úblanks   &  r6   rú   Ú%DrtAbstractVariableExpression._pretty9  s#   € Ø�4�KˆØ”c˜!“f•ˆØ˜aÐ'Ð'r5   c                ó   € V # rM   r'   rI   s   &r6   rò   Ú0DrtAbstractVariableExpression.eliminate_equality>  rŒ  r5   r'   Nr  )
r(   r)   r*   r+   rË   râ   rú   rò   r4   r«   r¬   s   @r6   rå   rå   1  s   ø‡ € òôò(÷
ð r5   rå   c                   ó   € ] tR tRtRtR# )ræ   iB  r'   N©r(   r)   r*   r+   r4   r'   r5   r6   ræ   ræ   B  ó   † ó 	r5   ræ   c                   ó   € ] tR tRtRtR# )r†  iH  r'   Nr™  r'   r5   r6   r†  r†  H  rš  r5   r†  c                   ó   € ] tR tRtRtR# )r‡  iN  r'   Nr™  r'   r5   r6   r‡  r‡  N  rš  r5   r‡  c                   ó   € ] tR tRtRtR# )rˆ  iT  r'   Nr™  r'   r5   r6   rˆ  rˆ  T  ó   † Ûr5   rˆ  c                   ó‚   a € ] tR tRt o R tRR ltR tRR ltR tR t	]
P                  tR tR	 tR
 tR tR tRtV tR# )ry   iX  c                ó   € Wn         W n        R # rM   ©rz   r{   )rE   rz   r{   s   &&&r6   r<   ÚDrtProposition.__init__Y  s   € Ø ŒØŽr5   c           	     ó  € V P                   V8X  dN   \        V\        4      '       g   Q R 4       h\        VP                   V P                  P                  WW44      4      # \        V P                   V P                  P                  WW44      4      # )z4Can only replace a proposition label with a variable)rz   rŽ   rå   ry   r{   r  )rE   rz   rc   r  r  s   &&&&&r6   r  ÚDrtProposition.replace]  s‹   € Ø�=‰=˜HÔ$ÜØÔ9÷ò ð FàEóFð ô "Ø×#Ñ#Ø—‘× Ñ  °}ÓTóð ô
 "Ø—‘Ø—‘× Ñ  °}ÓTóð r5   c                ó^   € \        V P                  V P                  P                  4       4      # rM   )ry   rz   r{   rò   rI   s   &r6   rò   Ú!DrtProposition.eliminate_equalityl  s    € Ü˜dŸm™m¨T¯X©X×-HÑ-HÓ-JÓKÐKr5   c                óL   € V'       d   V P                   P                  R 4      # . # )T)r{   râ   rà   s   &&r6   râ   ÚDrtProposition.get_refso  s   € ß*3ˆt�x‰x× Ñ  Ó&Ð;¸Ð;r5   c                ó¸   € V P                   VP                   8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rM   )rÓ   rz   r{   r¸   s   &&r6   rr  ÚDrtProposition.__eq__r  sK   € à�N‰N˜eŸo™oÑ-÷ &ð &Ø—‘ §¡Ñ/÷&ð &à—‘˜EŸI™IÑ%ð	
r5   c                ó   € W8X  * # rM   r'   r¸   s   &&r6   ru  ÚDrtProposition.__ne__y  rw  r5   c                ó6   € V P                   P                  4       # rM   )r{   rË   rI   s   &r6   rË   ÚDrtProposition.fol~  s   € Ø�x‰x�|‰|‹~Ðr5   c                ó¶  € V P                   P                  4       pR \        RV P                  ,          4      ,          pVR,           Uu. uF  q2R ,           V,           NK  	  upVR,           Uu. uF$  pRV P                  ,          R,           V,           NK&  	  up,           VR,           Uu. uF  q2R ,           V,           NK  	  up,           # u upi u upi u upi )rB  rU  ºNr:   Nºr:   rX  Nr&   rW  )r{   rú   r8  rz   )rE   Údrs_sr”  rR  s   &   r6   rú   ÚDrtProposition._pretty�  s±   € Ø—‘× Ñ Ó"ˆØ”c˜$ §¡Õ.Ó/Õ/ˆà,1°"®IÓ6©I D�S�[˜4×Ð©IÑ6Ø=BÀ3¾ZÓH¹Z°Tˆt�d—m‘mÕ# cÕ)¨D×0Ð0¹ZÑHõIà.3°B®iÓ8©i d�s�{˜T×!Ð!©iÑ8õ9ð	
ùÚ6ùÚHùÚ8s   Á	CÁ.*CÂ+Cc                ó4   € V! V! V P                   4      .4      # r.  )r{   ©rE   rœ   r0  s   &&&r6   r2  ÚDrtProposition.visitŠ  s   € á™8 D§H¡HÓ-Ð.Ó/Ð/r5   c                óH   € V! V P                   V! V P                  4      4      # )r5  r¡  rµ  s   &&&r6   rõ   ÚDrtProposition.visit_structuredŽ  s   € á˜$Ÿ-™-©°$·(±(Ó);Ó<Ð<r5   c                ó<   € R V P                    RV P                   R2# )zprop(rz  Ú)r¡  rI   s   &r6   r�  ÚDrtProposition.__str__’  s   € Ø�t—}‘}�o R¨¯© z°Ð3Ð3r5   )r{   rz   Nrƒ  r  )r(   r)   r*   r+   r<   r  rò   râ   rr  ru  r   r„  rË   rú   r2  rõ   r�  r4   r«   r¬   s   @r6   ry   ry   X  sO   ø‡ € òôòLô<ò
ò!ð ×"Ñ"€Hòò
ò0ò=÷4ð 4r5   ry   c                   ó6   a € ] tR tRt o R tRR ltR tRtV tR# )rb   i–  c                óH   € \        V P                  P                  4       4      # rM   )r   r§   rË   rI   s   &r6   rË   ÚDrtNegatedExpression.fol—  s   € Ü  §¡§¡£Ó1Ð1r5   c                ó8   € V P                   P                  V4      # rŽ  )r§   râ   rà   s   &&r6   râ   ÚDrtNegatedExpression.get_refsš  s   € à�y‰y×!Ñ! )Ó,Ð,r5   c                ó|  € V P                   P                  4       pVR ,           Uu. uF  pRV,           NK  	  upVR,           Uu. uF  pRV,           NK  	  up,           VR,           Uu. uF  pRV,           NK  	  up,           VR,           Uu. uF  pRV,           NK  	  up,           # u upi u upi u upi u upi )ºNrX  Nú    ºrX  é   Nz__  :rÅ  é   Nz  | :rÆ  NN)r§   rú   )rE   Ú
term_linesrR  s   &  r6   rú   ÚDrtNegatedExpression._prettyž  s¦   € Ø—Y‘Y×&Ñ&Ó(ˆ
à'1°"¦~Ó6¡~˜tˆV�d�]ˆ]¡~Ñ6Ø)3°C®Ó9© ˆv˜�}ˆ}©Ñ9õ:à)3°C®Ó9© ˆv˜�}ˆ}©Ñ9õ:ð *4°B®Ó8© ˆv˜�}ˆ}©Ñ8õ9ð	
ùÚ6ùÚ9ùÚ9ùÚ8s   ¦B*ÁB/Á*B4ÂB9r'   Nr  ©	r(   r)   r*   r+   rË   râ   rú   r4   r«   r¬   s   @r6   rb   rb   –  s   ø‡ € ò2ô-÷
ð 
r5   rb   c                   ó<   a € ] tR tRt o R tR tR tRR ltRtV t	R# )	r¥   i¨  c           	     ó‚   € V P                  VV P                  P                  V P                  \	        V4      R4      4      # )z�Rename all occurrences of the variable introduced by this variable
binder in the expression to ``newvar``.
:param newvar: ``Variable``, for the new variable
T)rÓ   r§   r  rz   r¡   )rE   r  s   &&r6   r  Ú!DrtLambdaExpression.alpha_convert©  s8   € ð
 �~‰~ØØ�I‰I×Ñ˜dŸm™mÔ-BÀ6Ó-JÈDÓQó
ð 	
r5   c                ó^   € \        V P                  V P                  P                  4       4      # rM   )r   rz   r§   rË   rI   s   &r6   rË   ÚDrtLambdaExpression.fol³  s   € Ü §¡¨t¯y©y¯}©}«Ó?Ð?r5   c                óØ  € V P                   .pV P                  pVP                  V P                  8X  d*   VP                  VP                   4       VP                  pKD  R P	                  R V 4       4      \
        P                  ,           pVP                  4       pR \        V4      ,          pVR,           Uu. uF  pRV,           V,           NK  	  upVR,           Uu. uF  pRV,           V,           NK  	  up,           VR,           Uu. uF  pRV,           V,           NK  	  up,           VR,           Uu. uF  pRV,           V,           NK  	  up,           # u upi u upi u upi u upi )	rB  c              3   ó4   "  € T F  pR V,          x € K  	  R# 5ir|  r'   )r%  r\  s   & r6   r&  Ú.DrtLambdaExpression._pretty.<locals>.<genexpr>¼  s   é € Ð:±	¨1˜d QŸhšh³	ùr~  r°  rÃ  r±  z \  rÄ  z /\ ºrÅ  NN)	rz   r§   rÓ   rp   rù   r    ÚDOTrú   r8  )rE   r¦   r§   Ú
var_stringrÇ  r”  rR  s   &      r6   rú   ÚDrtLambdaExpression._pretty¶  s%  € Ø—]‘]�Oˆ	Ø�y‰yˆØ�n‰n §¡Ô.Ø×Ñ˜TŸ]™]Ô+Ø—9‘9ŠDØ—X‘XÑ:±	Ó:Ó:¼Y¿]¹]ÕJˆ
Ø—\‘\“^ˆ
Ø”c˜*“oÕ%ˆà/9¸"®~Ó>©~ tˆV�e�^˜d×"Ð"©~Ñ>Ø2<¸S¶/ÓB±/¨$ˆw˜� ×%Ð%±/ÑBõCà7AÀ#¶ÓG±¨tˆw˜Õ# d×*Ð*±ÑGõHð 2<¸B¶Ó@±¨ˆv˜�~ ×$Ð$±Ñ@õAð	
ùÚ>ùÚBùÚGùÚ@s   Â8EÃEÄ
E"Ä6E'c                ó†   € V'       d.   V P                   .V P                  P                  R4      ,           # V P                   .# ©r"  T)rz   r§   râ   rà   s   &&r6   râ   ÚDrtLambdaExpression.get_refsÆ  s7   € ÷ ;DˆT�]‰]ˆO˜dŸi™i×0Ñ0°Ó6Õ6ð	
ØJNÏ-É-Èð	
r5   r'   Nr  )
r(   r)   r*   r+   r  rË   rú   râ   r4   r«   r¬   s   @r6   r¥   r¥   ¨  s   ø‡ € ò
ò@ò
÷ 
ò 
r5   r¥   c                   óF   a € ] tR tRt o RR ltR t]R 4       tR tRt	V t
R# )	rK  iÍ  c                óŒ   € V'       d<   V P                   P                  R4      V P                  P                  R4      ,           # . # r×  )r�   râ   r‚   rà   s   &&r6   râ   ÚDrtBinaryExpression.get_refsÎ  s;   € ÷ GPˆD�J‰J×Ñ Ó%¨¯©×(<Ñ(<¸TÓ(BÕBð	
ØUWð	
r5   c                ó°   € \         P                  V P                  V P                  4      V P	                  4       V P                  V P
                  4      4      # rM   )rK  rL  Ú_pretty_subexr�   ÚgetOpr‚   rI   s   &r6   rú   ÚDrtBinaryExpression._prettyÔ  sB   € Ü"×3Ñ3Ø×Ñ˜tŸz™zÓ*Ø�J‰J‹LØ×Ñ˜tŸ{™{Ó+ó
ð 	
r5   c                ó˜  € \        \        V 4      \        V4      4      p\        W4      p \        W#4      pR \        V4      ,          p\        \	        W4      4      pVR,           UUu. uF1  w  rgR V,           R ,           V,           R ,           V,           R ,           NK3  	  uppVR,           UUu. uF1  w  rgRV,           R ,           V,           R ,           V,           R,           NK3  	  upp,           VR,           UUu. uF1  w  rgR V,           R ,           V,           R ,           V,           R ,           NK3  	  upp,           # u uppi u uppi u uppi )rB  rÂ  rÄ  Ú(rº  rÒ  )rI  r8  Ú_pad_verticallyr(  rk  )Úfirst_linesÚopÚsecond_linesÚ	max_linesr”  Úfirst_second_linesÚ
first_lineÚsecond_lines   &&&     r6   rL  Ú$DrtBinaryExpression._assemble_prettyÛ  s<  € äœ˜KÓ(¬#¨lÓ*;Ó<ˆ	Ü% kÓ=ˆÜ& |Ó?ˆØ”c˜"“g•ˆÜ!¤# kÓ"@ÓAÐð 0BÀ"Ö/Eôá/EÑ+�Jð �jÕ  3Õ&¨Õ.°Õ4°{ÕBÀS×HÐHÙ/Eòð 0BÀ#Ö/Fôá/FÑ+�Jð �jÕ  3Õ&¨Õ+¨cÕ1°KÕ?À#×EÐEÙ/Fòõ	ð 0BÀ"Ö/Eôá/EÑ+�Jð �jÕ  3Õ&¨Õ.°Õ4°{ÕBÀS×HÐHÙ/Eòõð	
ùóùóùós   Á'7D:Â-7E Ã97Ec                ó"   € VP                  4       # rM   )rú   )rE   Úsubexs   &&r6   rÝ  Ú!DrtBinaryExpression._pretty_subexñ  s   € Ø�}‰}‹Ðr5   r'   Nr  )r(   r)   r*   r+   râ   rú   ÚstaticmethodrL  rÝ  r4   r«   r¬   s   @r6   rK  rK  Í  s-   ø‡ € ô
ò
ð ñ
ó ð
÷*ð r5   rK  c                   ó   € ] tR tRtRtR# )ÚDrtBooleanExpressioniõ  r'   Nr™  r'   r5   r6   rð  rð  õ  rž  r5   rð  c                   ó,   a € ] tR tRt o R tR tRtV tR# )r’   iù  c                óz   € \        V P                  P                  4       V P                  P                  4       4      # rM   )r   r�   rË   r‚   rI   s   &r6   rË   ÚDrtOrExpression.folú  s%   € Ü˜DŸJ™JŸN™NÓ,¨d¯k©k¯o©oÓ.?Ó@Ð@r5   c                ó¦   € \        V\        4      '       d#   VP                  4        Uu. uF  q"^R NK	  	  up# \        P	                  W4      # u upi ©r:   r=  )rŽ   r’   rú   rð  rÝ  ©rE   rì  rR  s   && r6   rÝ  ÚDrtOrExpression._pretty_subexý  sD   € Ü�eœ_×-Ò-Ø+0¯=©=¬?Ó;©? 4˜˜2“J©?Ñ;Ð;Ü#×1Ñ1°$Ó>Ð>ùò <ó   ©Ar'   N)r(   r)   r*   r+   rË   rÝ  r4   r«   r¬   s   @r6   r’   r’   ù  s   ø‡ € òA÷?ð ?r5   r’   c                   ó&   a € ] tR tRt o R tRtV tR# )r   i  c                óz   € \        V P                  P                  4       V P                  P                  4       4      # rM   )r   r�   rË   r‚   rI   s   &r6   rË   ÚDrtEqualityExpression.fol  s%   € Ü! $§*¡*§.¡.Ó"2°D·K±K·O±OÓ4EÓFÐFr5   r'   N)r(   r)   r*   r+   rË   r4   r«   r¬   s   @r6   r   r     s   ø‡ € ÷Gð Gr5   r   c                   óœ   a € ] tR tRt o RtRR ltRR ltR tR tRR lt	R	 t
R
 tR t]P                  tR tR tR tR tR tR tRtV tR# )rˆ   i  zDRS of the form '(DRS + DRS)'Nc                ó>   € \         P                  WV4       W0n        R # rM   )rð  r<   r
  )rE   r�   r‚   r
  s   &&&&r6   r<   ÚDrtConcatenation.__init__  s   € Ü×%Ñ% d°6Ô:Ø$Žr5   c                óÊ  € V P                   pV P                  pV P                  pWP                  4       9   dH   V'       d?   VP	                  WW44      pVP	                  WW44      pV'       d   VP	                  WW44      pMÓV'       dŽ   \        V P                  R4      4      VP                  4       ,           FZ  p\        \        V4      4      p	VP	                  W‰RV4      pVP	                  W‰RV4      pV'       g   KG  VP	                  W‰RV4      pK\  	  VP	                  WW44      pVP	                  WW44      pV'       d   VP	                  WW44      pV P                  WVV4      # )r  T)
r�   r‚   r
  râ   r  r  r  r¡   r   rÓ   )
rE   rz   rc   r  r  r�   r‚   r
  r  r\  s
   &&&&&     r6   r  ÚDrtConcatenation.replace  s9  € ð —
‘
ˆØ—‘ˆØ—_‘_ˆ
ð —}‘}“Ô&ßØŸ™Ø¨-ó�ð  Ÿ™Ø¨-ó�÷ Ø!+×!3Ñ!3Ø ¨mó"�Jø÷ ä˜tŸ}™}¨TÓ2Ó3°j·o±oÓ6G×GÐG�CÜ-¬o¸cÓ.BÓC�AØ!ŸM™M¨#°$¸ÓF�EØ#Ÿ^™^¨C°D¸-ÓH�Fß!‘zØ%/×%7Ñ%7¸ÀÀmÓ%Tš
ñ Hð —M‘M (¸ÓUˆEØ—^‘^ H¸-ÓWˆFßØ'×/Ñ/Ø¨-ó�
ð �~‰~˜e¨ZÓ8Ð8r5   c                ór   € V P                  4       p\        V\        4      '       d   Q hVP                  4       # rM   )rÊ   rŽ   rˆ   rò   r€  s   & r6   rò   Ú#DrtConcatenation.eliminate_equality6  s0   € à�m‰m‹oˆÜ˜cÔ#3×4Ò4Ð4Ð4Ø×%Ñ%Ó'Ð'r5   c                ó”  € V P                   P                  4       pV P                  P                  4       pV P                  '       d   V P                  P                  4       MR p\	        V\
        4      '       dÀ   \	        V\
        4      '       dª   \        VP                  R4      4      \        VP                  R4      4      ,           F)  p\        \        V4      4      pVP                  WER4      pK+  	  \        VP                  VP                  ,           VP                  VP                  ,           V4      # V P                  WV4      # )NT)r�   rÊ   r‚   r
  rŽ   r!   r  râ   r¡   r   r  rk   rl   rÓ   )rE   r�   r‚   r
  r  r  s   &     r6   rÊ   ÚDrtConcatenation.simplify<  så   € Ø—
‘
×#Ñ#Ó%ˆØ—‘×%Ñ%Ó'ˆØ37·?·?°?�T—_‘_×-Ñ-Ô/Èˆ
ä�eœS×!Ò!¤j°¼×&=Ò&=ä˜5Ÿ>™>¨$Ó/Ó0´3°v·±ÀtÓ7LÓ3M×MÐM�ä.¬¸sÓ/CÓD�ØŸ™¨°TÓ:’ñ Nô
 �u—z‘z F§K¡KÕ/°·±¸v¿|¹|Õ1KÈZÓXÐXà—>‘> %°Ó<Ð<r5   c                ó  € V P                   P                  V4      V P                  P                  V4      ,           pV P                  '       d3   V'       d+   VP	                  V P                  P                  R4      4       V# r×  )r�   râ   r‚   r
  r*  )rE   rá   rk   s   && r6   râ   ÚDrtConcatenation.get_refsL  sU   € à�z‰z×"Ñ" 9Ó-°·±×0DÑ0DÀYÓ0OÕOˆØ�?�?ˆ?ŸyØ�K‰K˜Ÿ™×0Ñ0°Ó6Ô7Øˆr5   c                ó"   € \         P                  # rM   )r    r,   rI   s   &r6   rÞ  ÚDrtConcatenation.getOpS  s   € Ü×!Ñ!Ð!r5   c                óÌ  € \        V\        4      '       dÎ   V P                  4       pVP                  4       p\        V4      \        V4      8X  d•   Tp\	        W#4       F(  w  rVV P                  V4      pVP                  WgR4      pK*  	  V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # R# rj  )
rŽ   rˆ   râ   r8  rk  rx   r  r�   r‚   r
  )rE   r¹   Ú	self_refsÚ
other_refsrl  rm  rn  ro  s   &&      r6   rr  ÚDrtConcatenation.__eq__V  sË   € ô �eÔ-×.Ò.ØŸ™›ˆIØŸ™Ó)ˆJÜ�9‹~¤ Z£Ô0Ø"'�Ü! )Ö8‘F�BØ ×8Ñ8¸Ó<�EØ&5×&=Ñ&=¸bÈÓ&N’Oñ 9ð —J‘J /×"7Ñ"7Ñ7÷ Fð FØŸ™ ×'=Ñ'=Ñ=÷Fð FàŸ™¨?×+EÑ+EÑEðñ
 r5   c                ó   € W8X  * # rM   r'   r¸   s   &&r6   ru  ÚDrtConcatenation.__ne__h  rw  r5   c                óè   € \        V P                  P                  4       V P                  P                  4       4      pV P                  '       d$   \        WP                  P                  4       4      pV# rM   )r   r�   rË   r‚   r
  r   )rE   ró   s   & r6   rË   ÚDrtConcatenation.folm  sI   € Ü˜$Ÿ*™*Ÿ.™.Ó*¨D¯K©K¯O©OÓ,=Ó>ˆØ�?�?ˆ?Ü˜a§¡×!4Ñ!4Ó!6Ó7ˆAØˆr5   c                óR  € \         P                  V P                  V P                  4      V P	                  4       V P                  V P
                  4      4      pV P                  '       d>   \         P                  V\        P                  V P                  P                  4       4      pV# rM   )
rK  rL  rÝ  r�   rÞ  r‚   r
  r    rM  rú   r€  s   & r6   rú   ÚDrtConcatenation._prettys  sy   € Ü!×2Ñ2Ø×Ñ˜tŸz™zÓ*Ø�J‰J‹LØ×Ñ˜tŸ{™{Ó+ó
ˆð
 �?�?ˆ?Ü%×6Ñ6Ø”Y—]‘] D§O¡O×$;Ñ$;Ó$=óˆCð ˆ
r5   c                ó¦   € \        V\        4      '       d#   VP                  4        Uu. uF  q"^R NK	  	  up# \        P	                  W4      # u upi rõ  )rŽ   rˆ   rú   rð  rÝ  rö  s   && r6   rÝ  ÚDrtConcatenation._pretty_subex  sE   € Ü�eÔ-×.Ò.Ø+0¯=©=¬?Ó;©? 4˜˜2“J©?Ñ;Ð;Ü#×1Ñ1°$Ó>Ð>ùò <rø  c                óð   € V P                   '       d<   V! V! V P                  4      V! V P                  4      V! V P                   4      .4      # V! V! V P                  4      V! V P                  4      .4      # r.  )r
  r�   r‚   rµ  s   &&&r6   r2  ÚDrtConcatenation.visit„  sa   € à�?�?ˆ?ÙÙ˜$Ÿ*™*Ó%¡x°·±Ó'<¹hÀtÇÁÓ>WÐXóð ñ ™x¨¯
©
Ó3±X¸d¿k¹kÓ5JÐKÓLÐLr5   c                ó  € V P                  V P                  4      pV P                  V P                  4      p\        P                  V,           R ,           V P                  4       ,           R ,           V,           \        P                  ,           pV P                  '       dh   \        P                  V,           R ,           \        P                  ,           R ,           RV P                  ,          ,           \        P                  ,           # V# )rB  rU  )
Ú
_str_subexr�   r‚   r   rT   rÞ  rj   r
  r    rM  )rE   r�   r‚   r{   s   &   r6   r�  ÚDrtConcatenation.__str__�  s¼   € Ø—‘ §
¡
Ó+ˆØ—‘ §¡Ó-ˆÜ�k‰k˜EÕ! CÕ'¨$¯*©*«,Õ6¸Õ<¸vÕEÌÏÉÕTˆØ�?�?ˆ?ä—‘Øõàõô —-‘-õ ð õ	ð
 ˜Ÿ™Õ(õ)ô —/‘/õ"ðð ˆ
r5   c                ój   € R V,          p\        V\        4      '       d   VP                  f   V^R # V# )rU  r=  )rŽ   rˆ   r
  )rE   rì  r´   s   && r6   r  ÚDrtConcatenation._str_subex�  s4   € Ø�5�LˆÜ�eÔ-×.Ò.°5×3CÑ3CÒ3KØ�Q�r�7ˆNØˆr5   )r
  rM   rƒ  r  )r(   r)   r*   r+   rª   r<   r  rò   rÊ   râ   rÞ  rr  ru  rð  r„  rË   rú   rÝ  r2  r�  r  r4   r«   r¬   s   @r6   rˆ   rˆ     sb   ø‡ € Ù'ô%ô%9òN(ò=ô ò"òò$!ð $×,Ñ,€Hòò
ò?ò
Mò÷ ð r5   rˆ   c                   ó6   a € ] tR tRt o R tRR ltR tRtV tR# )r›   i¤  c                óz   € \        V P                  P                  4       V P                  P                  4       4      # rM   )r	   rœ   rË   r�   rI   s   &r6   rË   ÚDrtApplicationExpression.fol¥  s)   € Ü$ T§]¡]×%6Ñ%6Ó%8¸$¿-¹-×:KÑ:KÓ:MÓNÐNr5   c                óŒ   € V'       d<   V P                   P                  R4      V P                  P                  R4      ,           # . # r×  )rœ   râ   r�   rà   s   &&r6   râ   Ú!DrtApplicationExpression.get_refs¨  s>   € ÷ ð �M‰M×"Ñ" 4Ó(¨4¯=©=×+AÑ+AÀ$Ó+GÕGð	
ð ð	
r5   c                ó*  € V P                  4       w  rVP                  4       pV Uu. uF  qDP                  4       NK  	  pp\        \        \        V.V,           4      4      p\        W64      pV Uu. uF  p\        Wv4      NK  	  pp\        \        V\        \        V!  4      4      4      pVR ,           U	U
u. uF+  w  ršV	R,           RP                  V
4      ,           R,           NK-  	  up
p	VR,           U	U
u. uF+  w  ršV	R,           RP                  V
4      ,           R,           NK-  	  up
p	,           VR,           U	U
u. uF+  w  ršV	R,           RP                  V
4      ,           R,           NK-  	  up
p	,           # u upi u upi u up
p	i u up
p	i u up
p	i )rÂ  rB  rÄ  rá  ry  rº  rÒ  )	Úuncurryrú   rI  r/  r8  râ  r(  rk  rù   )rE   rœ   ÚargsÚfunction_linesÚargÚ
args_linesræ  Ú	arg_linesÚfunc_args_linesÚ	func_lineÚ	args_lines   &          r6   rú   Ú DrtApplicationExpression._pretty°  sr  € ØŸ™›‰ˆØ!×)Ñ)Ó+ˆÙ/3Ó4©t¨—k‘k–m©tˆ
Ð4ÜœœC .Ð!1°JÕ!>Ó?Ó@ˆ	Ü(¨ÓCˆÙMWÓXÉZÀ	”o iÖ;ÉZˆ
ÐXÜœs >´4¼¸ZÑ8HÓ3IÓJÓKˆð -<¸BÖ,?ôá,?Ñ(�Ið ˜C• #§(¡(¨9Ó"5Õ5¸×;Ð;Ù,?òð -<¸CÖ,@ôá,@Ñ(�Ið ˜C• #§(¡(¨9Ó"5Õ5¸×;Ð;Ù,@òõ	ð -<¸BÖ,?ôá,?Ñ(�Ið ˜C• #§(¡(¨9Ó"5Õ5¸×;Ð;Ù,?òõð	
ùò 5ùò Yùóùóùós   §E9Á1E>Â81FÃ81F	Ä>1Fr'   Nr  rÉ  r¬   s   @r6   r›   r›   ¤  s   ø‡ € òOô
÷
ð 
r5   r›   c                 ót   € R \        V ^ ,          4      ,          .pWV\        V 4      ,
          ,          ,           # )rB  r’  )Úlinesræ  Úpad_lines   && r6   râ  râ  È  s.   € Ø”c˜% �(“mÕ#Ð$€HØ˜y¬3¨u«:Õ5Õ6Õ6Ð6r5   c                   ó<   a € ] tR tRt o R tRR ltR tR tRtV t	R# )	ÚPossibleAntecedentsiÍ  c                ó   € \        V 4      # )zSet of free variables.)r  rI   s   &r6   r  ÚPossibleAntecedents.freeÎ  s   € ä�4‹yÐr5   c                ó€   € \        4       pV  F-  pWa8X  d   V P                  V4       K  V P                  V4       K/  	  V# )r  )r0  rp   )rE   rz   rc   r  r  ÚresultÚitems   &&&&&  r6   r  ÚPossibleAntecedents.replaceÒ  s;   € ô %Ó&ˆÛˆDØÔØ—‘˜JÖ'à—‘˜DÖ!ñ	 ð
 ˆr5   c                ó@   € R V ,          pR\        V4      ,          pW"V.# r‘  r’  r“  s   &  r6   rú   ÚPossibleAntecedents._prettyÝ  s#   € Ø�4�KˆØ”c˜!“f•ˆØ˜aÐ Ð r5   c                óN   € R RP                  R V  4       4      ,           R,           # )r$   ry  c              3   ó4   "  € T F  pR V,          x € K  	  R# 5ir|  r'   )r%  Úits   & r6   r&  Ú.PossibleAntecedents.__str__.<locals>.<genexpr>ã  s   é € Ð7±$¨B˜d RŸiši³$ùr~  r%   )rù   rI   s   &r6   r�  ÚPossibleAntecedents.__str__â  s!   € Ø�S—X‘XÑ7±$Ó7Ó7Õ7¸#Õ=Ð=r5   r'   Nrƒ  )
r(   r)   r*   r+   r  r  rú   r�  r4   r«   r¬   s   @r6   r0  r0  Í  s   ø‡ € òô	ò!÷
>ð >r5   r0  c                   ó   € ] tR tRtRtR# )ÚAnaphoraResolutionExceptioniæ  r'   Nr™  r'   r5   r6   r?  r?  æ  rž  r5   r?  c                 ó&  € \        V \        4      '       Ed   V P                  4       '       d¾   \        4       pV Fu  pVP	                  4        F^  pV P                  V4      pVP                  V P                  P                  8X  g   K;  WPP                  8X  d   KM  VP                  V4       K`  	  Kw  	  \        V4      ^8X  d   V^ ,          pMTpV P                  V P                  V4      # \        V P                  W.,           4      p\        V P                  W.,           4      pV P                  Wx4      # \        V \        4      '       Ed/   . p	V P                   FÎ  p
\        W¡V .,           4      p\        V\        4      '       d’   \        VP                   \        4      '       d$   VP                   pVP"                  Vn        WËn        \        VP"                  \        4      '       d/   VP"                  '       g   \%        RVP                   ,          4      hV	P                  V4       KÐ  	  V P&                  '       d   \        V P&                  W.,           4      pMRpV P                  V P(                  W�4      # \        V \*        4      '       d   V # \        V \,        4      '       d-   V P                  \        V P.                  W.,           4      4      # \        V \0        4      '       d|   V P&                  '       d   \        V P&                  W.,           4      pMRpV P                  \        V P                   W.,           4      \        V P"                  W.,           4      V4      # \        V \2        4      '       dI   V P                  \        V P                   W.,           4      \        V P"                  W.,           4      4      # \        V \4        4      '       d8   V P                  V P6                  \        V P.                  W.,           4      4      # R# )r:   z+Variable '%s' does not resolve to anything.N)rŽ   r	   rç   r0  râ   rx   rÓ   r�   rp   r8  rƒ   rî   rœ   r!   rl   r   r�   r‚   r?  r
  rk   r   r   r§   rˆ   r
   r   rz   )rc   ÚtrailÚpossible_antecedentsÚancestorr  ÚrefexÚ
resolutionÚ
r_functionÚ
r_argumentÚr_condsr  Úr_condÚtempr
  s   &&            r6   rî   rî   ê  sH  € Ü�*Ô3×4Ó4Ø×)Ñ)×+Ò+Ü#6Ó#8Ð Û!�Ø#×,Ñ,Ö.�CØ&×>Ñ>¸sÓC�Eð
 —‘¨*×*=Ñ*=×*GÑ*GÖGØ×!4Ñ!4Ö4à,×3Ñ3°EÖ:ó /ñ "ô Ð'Ó(¨AÔ-Ø1°!Õ4‘
à1�
Ø×5Ñ5°j×6IÑ6IÈ:ÓVÐVä)¨*×*=Ñ*=¸uÀ|Õ?SÓTˆJÜ)¨*×*=Ñ*=¸uÀ|Õ?SÓTˆJØ×'Ñ'¨
Ó?Ð?ä	�J¤×	$Ó	$ØˆØ×$Ô$ˆDÜ% d°Z°LÕ,@ÓAˆFô ˜&Ô"4×5Ò5Ü˜fŸl™lÔ,?×@Ò@à!Ÿ<™<�DØ#)§=¡=�F”LØ$(”MÜ˜fŸm™mÔ-@×AÒAØ!Ÿ=Ÿ=˜=Ü9ð3Ø5;·\±\õBóð ð
 �N‰N˜6Ö"ñ# %ð$ × × Ð Ü)¨*×*?Ñ*?ÀÈÕAUÓV‰JàˆJØ×#Ñ# J§O¡O°WÓIÐIä	�JÔ :×	;Ò	;ØÐä	�JÔ 1×	2Ò	2Ø×#Ñ#Ü˜ZŸ_™_¨e°lÕ.BÓCó
ð 	
ô 
�JÔ 0×	1Ò	1Ø× × Ð Ü)¨*×*?Ñ*?ÀÈÕAUÓV‰JàˆJØ×#Ñ#Ü˜Z×-Ñ-¨u°|Õ/CÓDÜ˜Z×.Ñ.°¸Õ0DÓEØó
ð 	
ô 
�JÔ 0×	1Ò	1Ø×#Ñ#Ü˜Z×-Ñ-¨u°|Õ/CÓDÜ˜Z×.Ñ.°¸Õ0DÓEó
ð 	
ô
 
�JÔ 0×	1Ò	1Ø×#Ñ#Ø×ÑÔ!1°*·/±/À5È<ÕCWÓ!Xó
ð 	
ñ 
2r5   c                   ó–   a € ] tR tRt o ^t^
t^tRR ltR t]]3R lt	R t
R tR tRR	 ltR
 tR tR tR tR tR tR tR tRtV tR# )r  i=  Nc                óà  € RpV'       gÒ   ^ RI HpHp ^ RIHp V! 4       pVP                  R4       V! R^R7      pV'       dy   V! V^ ^ R7      pWƒn        W0n        V P                  WP                  V P                  4      w  rš\        W�P                  ,           ^d4      pW P                  ,           pV! WKVR7      pMV! VRRR7      pVP                  4        Wƒn        W0n        Wn        W@n        R# )	zñ
:param drs: ``DrtExpression``, The DRS to be drawn
:param size_canvas: bool, True if the canvas size should be the exact size of the DRS
:param canvas: ``Canvas`` The canvas on which to draw the DRS.  If none is given, create a new canvas.
N)ÚCanvasÚTk)ÚFontÚDRTÚ	helvetica)ÚfamilyÚsize)ÚwidthÚheighti,  )ÚtkinterrM  rN  Útkinter.fontrO  ÚtitleÚfontÚcanvasÚ_visitÚ
OUTERSPACEÚTOPSPACErI  Úpackr{   Úmaster)rE   r{   Úsize_canvasrZ  r_  rM  rN  rO  rY  ÚrightÚbottomrT  rU  s   &&&&         r6   r<   ÚDrsDrawer.__init__B  s¾   € ð ˆß÷ +Ý)á“TˆFØ�L‰L˜Ôá˜{°Ô4ˆDçÙ ¨a¸Ô:�Ø"”Ø$”Ø"&§+¡+¨c·?±?ÀDÇMÁMÓ"R‘�ä˜E§O¡OÕ3°SÓ9�Ø§/¡/Õ1�Ù ¸FÔC‘á ¨c¸#Ô>�à�K‰KŒMØŒKàŒØŒØŽr5   c                óL   € V P                   P                  P                  R4      # )z Get the height of a line of textÚ	linespace)rZ  rY  ÚmetricsrI   s   &r6   Ú_get_text_heightÚDrsDrawer._get_text_heighth  s   € à�{‰{×Ñ×'Ñ'¨Ó4Ð4r5   c                ó  € V P                  V P                  V P                  W4       V P                  '       d-   \	        4       '       g   V P                  P                  4        R# V P                  V P                  W4      # )zDraw the DRSN)Ú_handler{   Ú_draw_commandr_  r   Úmainloopr[  )rE   rF   Úys   &&&r6   r  ÚDrsDrawer.drawl  sP   € à�‰�T—X‘X˜t×1Ñ1°1Ô8à�;�;ˆ;œwŸyšyØ�K‰K× Ñ Ö"à—;‘;˜tŸx™x¨Ó.Ð.r5   c                ó:   € V P                  WP                  W#4      # )zñ
Return the bottom-rightmost point without actually drawing the item

:param expression: the item to visit
:param x: the top of the current drawing area
:param y: the left side of the current drawing area
:return: the bottom-rightmost point
)rj  Ú_visit_command)rE   rc   rF   rm  s   &&&&r6   r[  ÚDrsDrawer._visitu  s   € ð �|‰|˜J×(;Ñ(;¸QÓBÐBr5   c                óº  € \        V\        4      '       d5   V P                  P                  W#RV P                  P                  VR7       M€\        V\
        4      '       dk   Vw  rEV P                  P                  W#WE4       W0P                  4       ,           V P                  ^,          ,           pV P                  P                  W&WF4       V P                  WV4      # )zÐ
Draw the given item at the given location

:param item: the item to draw
:param x: the top of the current drawing area
:param y: the left side of the current drawing area
:return: the bottom-rightmost point
Únw)ÚanchorrY  Útext)rŽ   ÚstrrZ  Úcreate_textrY  ÚtupleÚcreate_rectanglerg  ÚBUFFERÚcreate_linerp  )rE   r5  rF   rm  ra  rb  Úhoriz_line_ys   &&&&   r6   rk  ÚDrsDrawer._draw_command€  s©   € ô �dœC× Ò Ø�K‰K×#Ñ# A°¸D¿K¹K×<LÑ<LÐSWÐ#ÕXÜ˜œe×$Ò$à"‰OˆUØ�K‰K×(Ñ(¨¨uÔ=à×)Ñ)Ó+Õ+¨t¯{©{¸Q­Õ?ð ð �K‰K×#Ñ# A°UÔIà×"Ñ" 4¨AÓ.Ð.r5   c                óä   € \        V\        4      '       dB   W P                  P                  P	                  V4      ,           W0P                  4       ,           3# \        V\        4      '       d   V# R# )zë
Return the bottom-rightmost point without actually drawing the item

:param item: the item to visit
:param x: the top of the current drawing area
:param y: the left side of the current drawing area
:return: the bottom-rightmost point
N)rŽ   rv  rZ  rY  Úmeasurerg  rx  )rE   r5  rF   rm  s   &&&&r6   rp  ÚDrsDrawer._visit_command–  sW   € ô �dœC× Ò ØŸ™×(Ñ(×0Ñ0°Ó6Õ6¸×<QÑ<QÓ<SÕ8SÐTÐTÜ˜œe×$Ò$ØˆKñ %r5   c                óZ  € W P                   8X  d+    VP                  V,           pVP                  V,           pWV3# \	        V\
        4      '       d   V P                  pEM\	        V\        4      '       d   V P                  pMñ\	        V\        4      '       d   V P                  pMÎ\	        V\        4      '       d   V P                  pM«\	        V\        4      '       d   V P                  pMˆ\	        V\        4      '       d   V P                   pMe\	        V\"        4      '       d   V P                  pMB\	        V\$        4      '       d   V P&                  pM\)        VP*                  P,                  4      hV! WW44      w  rVWS,
          Vn        Wd,
          Vn        WV3#   \         d     ELni ; i)a  
:param expression: the expression to handle
:param command: the function to apply, either _draw_command or _visit_command
:param x: the top of the current drawing area
:param y: the left side of the current drawing area
:return: the bottom-rightmost point
)rp  Ú_drawing_widthÚ_drawing_heightrÒ   rŽ   rå   Ú_handle_VariableExpressionr!   Ú_handle_DRSrb   Ú_handle_NegatedExpressionr¥   Ú_handle_LambdaExpressionr
   Ú_handle_BinaryExpressionr›   Ú_handle_ApplicationExpressionr0  ry   Ú_handle_DrtPropositionr�   rÓ   r(   )rE   rc   ÚcommandrF   rm  ra  rb  r–   s   &&&&&   r6   rj  ÚDrsDrawer._handle¤  s\  € ð ×)Ñ)Ô)ðà"×1Ñ1°AÕ5�Ø#×3Ñ3°aÕ7�Ø�Ð&ô
 �jÔ"?×@Ò@Ø×5Ñ5ŠGÜ˜
¤C×(Ò(Ø×&Ñ&‰GÜ˜
Ô$8×9Ò9Ø×4Ñ4‰GÜ˜
Ô$7×8Ò8Ø×3Ñ3‰GÜ˜
Ô$4×5Ò5Ø×3Ñ3‰GÜ˜
Ô$<×=Ò=Ø×8Ñ8‰GÜ˜
Ô$7×8Ò8Ø×5Ñ5‰GÜ˜
¤N×3Ò3Ø×1Ñ1‰Gä˜J×0Ñ0×9Ñ9Ó:Ð:á! *°qÓ<‰ˆð %*¥Iˆ
Ô!Ø%+¥Zˆ
Ô"àˆÐøô; "ô âðús   ’(F ÆF*Æ)F*c                ó"   € V! R V,          W44      # ©rU  r'   )rE   rc   r‹  rF   rm  s   &&&&&r6   r„  Ú$DrsDrawer._handle_VariableExpressionÒ  s   € Ù�t˜jÕ(¨!Ó/Ð/r5   c           
     ó  € V P                  \        P                  W44      ^ ,          pV P                  VP                  W%V4      w  rVV! \        P                  VV P                  WFV,
          V P                  4       4      4       WV3# rt   )rp  r    ÚNOTrj  r§   Ú_get_centered_toprg  ©rE   rc   r‹  rF   rm  ra  rb  s   &&&&&  r6   r†  Ú#DrsDrawer._handle_NegatedExpressionÕ  sr   € à×#Ñ#¤I§M¡M°1Ó8¸Õ;ˆð Ÿ,™, z§¡¸ÈÓJ‰ˆñ 	Ü�M‰MØØ×"Ñ" 1¨q¥j°$×2GÑ2GÓ2IÓJô	
ð ˆÐr5   c                ó4  € W0P                   ,           pW@P                   ,           pVP                  '       d$   R P                  R VP                   4       4      pMRpV! WuV4      w  r†W`P                   ^,          ,          pVP                  '       dF   VP                   F4  p	V P	                  W’WV4      w  r¦\        WŠ4      pW`P                   ,          pK6  	  M'W`P                  4       V P                   ,           ,          pW€P                   ,          pV! W†3W44      # )rB  c              3   ó4   "  € T F  pR V,          x € K  	  R# 5ir|  r'   )r%  Úrs   & r6   r&  Ú(DrsDrawer._handle_DRS.<locals>.<genexpr>ë  s   é € Ð>©o¨˜D 1ŸHšH«oùr~  z     )rz  rk   rù   rl   rj  rI  rg  )rE   rc   r‹  rF   rm  Úleftrb  rk   Ú	max_rightr  ra  s   &&&&&      r6   r…  ÚDrsDrawer._handle_DRSå  sß   € Ø—;‘;�ˆØ—[‘[•ˆð �?�?ˆ?Ø—8‘8Ñ>¨j¯oªoÓ>Ó>‰DàˆDÙ% d°&Ó9ÑˆØ—+‘+ •/Õ!ˆð ××ÐØ"×(Ô(�Ø"&§,¡,¨t¸dÓ"K‘�Ü 	Ó1�	ØŸ+™+Õ%’ò )ð
 ×+Ñ+Ó-°·±Õ;Õ;ˆFð 	—[‘[Õ ˆ	Ù˜	Ð*¨AÓ1Ð1r5   c                óx  € VP                  4       w  rV\        V\        4      '       g   VP                  pVP                  .pV P                  WSV4      ^,          p\        V.V Uu. uF  q€P                  WƒV4      ^,          NK  	  up,           4      p	W”,
          p
V P                  WJVP                  4      pV P                  WRW;4      ^ ,          pV P                  WJV P                  4       4      pV! \        P                  WÍ4      ^ ,          p\        V4       Fx  w  rèV P                  WJVP                  4      pV P                  W‚WÏ4      ^ ,          pV^,           \        V4      8  g   KS  V! \        P                  R,           WÍ4      ^ ,          pKz  	  V! \        P                   WÍ4      ^ ,          pWÉ3# u upi )r:   rB  )r"  rŽ   rå   rœ   r�   r[  rI  r’  rƒ  rj  rg  r    rT   Ú	enumerater8  rh   rj   )rE   rc   r‹  rF   rm  rœ   r#  Úfunction_bottomr%  Ú
max_bottomÚline_heightÚfunction_drawing_topra  Úcentred_string_topr  Úarg_drawing_tops   &&&&&           r6   r‰  Ú'DrsDrawer._handle_ApplicationExpressionþ  s�  € Ø#×+Ñ+Ó-‰ˆÜ˜(Ô$A×BÒBà!×*Ñ*ˆHØ×'Ñ'Ð(ˆDð Ÿ+™+ h°1Ó5°aÕ8ˆÜØÐÁdÓ KÁd¸s§¡¨S°QÓ!7¸×!:Ð!:ÁdÑ KÕKó
ˆ
ð !•nˆð  $×5Ñ5Ø˜H×4Ñ4ó 
Ðð —‘˜X°ÓHÈÕKˆð "×3Ñ3Ø˜D×1Ñ1Ó3ó
Ðñ œ	Ÿ™¨ÓBÀ1ÕEˆô   –o‰FˆAØ"×4Ñ4Ø × 3Ñ 3óˆOð —L‘L ¨uÓFÀqÕIˆEà�1�u”s˜4“yÖ á¤	§¡°#Õ 5°uÓQÐRSÕT’ñ &ñ œ	Ÿ™¨ÓCÀAÕFˆàÐ"Ð"ùò? !Ls   Á&!F7
c           
     óN  € \         P                  R VP                  ,          ,           \         P                  ,           pV P	                  WSV4      ^ ,          pV P                  VP                  W&V4      w  rgV! WSV P                  WGV,
          V P                  4       4      4       Wg3# rŽ  )	r    ÚLAMBDArz   rÓ  rp  rj  r§   r’  rg  )rE   rc   r‹  rF   rm  r¦   ra  rb  s   &&&&&   r6   r‡  Ú"DrsDrawer._handle_LambdaExpression)  sŠ   € ä×$Ñ$ t¨j×.AÑ.AÕ'AÕAÄIÇMÁMÕQˆ	Ø×#Ñ# I°!Ó4°QÕ7ˆð Ÿ,™, z§¡¸ÈÓJ‰ˆñ 	Ø˜$×0Ñ0°¸QµJÀ×@UÑ@UÓ@WÓXô	
ð ˆÐr5   c           
     óÜ  € V P                  VP                  ^ ^ 4      ^,          pV P                  VP                  ^ ^ 4      ^,          p\        WV4      pV P	                  WGV P                  4       4      pV! \        P                  W84      ^ ,          p	VP                  P                  pV P                  VP                  VV	V P	                  WGV4      4      w  ršV! RVP                  4       ,          W˜4      ^ ,          p	VP                  P                  pV P                  VP                  VV	V P	                  WGV4      4      w  r›V! \        P                  W˜4      ^ ,          p	V	\        W«4      3# )r   z %s )r[  r�   r‚   rI  r’  rg  r    rT   rƒ  rj  rÞ  rj   )rE   rc   r‹  rF   rm  Úfirst_heightÚsecond_heightr   r¢  ra  Úfirst_bottomÚsecond_bottoms   &&&&&       r6   rˆ  Ú"DrsDrawer._handle_BinaryExpression8  sM  € à—{‘{ :×#3Ñ#3°Q¸Ó:¸1Õ=ˆØŸ™ J×$5Ñ$5°q¸!Ó<¸QÕ?ˆÜ˜,Ó6ˆð "×3Ñ3Ø˜D×1Ñ1Ó3ó
Ðñ œ	Ÿ™¨Ó>¸qÕAˆð "×'Ñ'×7Ñ7ˆØ $§¡Ø×ÑØØØ×"Ñ" 1°<Ó@ó	!
Ñˆñ ˜ ×!1Ñ!1Ó!3Õ3°UÓOÐPQÕRˆð #×)Ñ)×9Ñ9ˆØ!%§¡Ø×ÑØØØ×"Ñ" 1°=ÓAó	"
Ñˆñ œ	Ÿ™¨ÓCÀAÕFˆà”s˜<Ó7Ð8Ð8r5   c                óz   € V! VP                   W44      ^ ,          pV P                  VP                  W%V4      w  rVWV3# rt   )rz   rj  r§   r“  s   &&&&&  r6   rŠ  Ú DrsDrawer._handle_DrtProposition^  s;   € á˜
×+Ñ+¨QÓ2°1Õ5ˆð Ÿ,™, z§¡¸ÈÓJ‰ˆàˆÐr5   c                ó.   € WV,
          ^,          ,           # )zµGet the y-coordinate of the point that a figure should start at if
its height is 'item_height' and it needs to be centered in an area that
starts at 'top' and is 'full_height' tall.r'   )rE   ÚtopÚfull_heightÚitem_heights   &&&&r6   r’  ÚDrsDrawer._get_centered_topg  s   € ð  KÕ/°1Õ4Õ4Ð4r5   )rZ  r{   r_  r$  )r   r   )r(   r)   r*   r+   rz  r]  r\  r<   rg  r  r[  rk  rp  rj  r„  r†  r…  r‰  r‡  rˆ  rŠ  r’  r4   r«   r¬   s   @r6   r  r  =  sp   ø‡ € Ø€FØ€HØ€Jô$òL5ð   8ô /ò	Cò/ò,ô,ò\0òò 2ò2)#òVò$9òL÷5ð 5r5   r  c                  ó  € \        R4       \        P                  p \        V ! R4      4       \        V ! R4      4       \        V ! R4      4       \        V ! R4      4       \        V ! R4      4       \        V ! R4      4       \        V ! R4      4       \        V ! R4      4       \        V ! R	4      4       \        R4       \        V ! R4      P                  4       4       \        R4       V ! R
4      p\        V4       VP	                  \        R4      4      p\        V4       \        W8H  4       \        R4       \        \        V ! R4      4      4       \        \        V ! R4      4      4       \        \        V ! R4      4      4       \        R4       V ! R4      P                  4        V ! R4      P                  4        V ! R4      P                  4        V ! R4      P                  4        V ! R4      P                  4        R# )Ú=ú([x,y],[sees(x,y)])ú([x],[man(x), walks(x)])z\x.\y.([],[sees(x,y)])z\x.([],[walks(x)])(john)z$(([x],[walks(x)]) + ([y],[runs(y)]))z#(([],[walks(x)]) -> ([],[runs(x)]))z([x],[PRO(x), sees(John,x)])ú ([x],[man(x), -([],[walks(x)])])ú*([],[(([x],[man(x)]) -> ([],[walks(x)]))])z\x.([],[P(x)])Úzz,([x,y,z],[dog(x), cat(y), walks(z), PRO(z)])z3([],[(([x],[dog(x)]) -> ([y],[walks(y), PRO(y)]))])z(([x,y],[]) + ([],[PRO(x)]))ú([],[])z@([],[([x],[big(x), dog(x)]) -> ([],[bark(x)]) -([x],[walk(x)])])z'([x,y],[x=y]) + ([z],[dog(z), walk(z)])z4([],[([x],[]) | ([y],[]) | ([z],[dog(z), walk(z)])])z0\P.\Q.(([x],[]) + P(x) + Q(x))(\x.([],[dog(x)]))Nz2====================TEST PARSE====================z2====================Test fol()====================z\====================Test alpha conversion and lambda expression equality====================z?====================Test resolve_anaphora()====================z;====================Test pretty_print()====================)rþ   r¯   rµ   rË   r  r   rî   rÿ   )ÚdexprÚe1Úe2s      r6   ÚdemorÀ  n  sž  € Ü	Ð
,Ô-Ü×$Ñ$€EÜ	‰%Ð&Ó
'Ô(Ü	‰%Ð+Ó
,Ô-Ü	‰%Ð)Ó
*Ô+Ü	‰%Ð+Ó
,Ô-Ü	‰%Ð7Ó
8Ô9Ü	‰%Ð6Ó
7Ô8Ü	‰%Ð/Ó
0Ô1Ü	‰%Ð3Ó
4Ô5Ü	‰%Ð=Ó
>Ô?ä	Ð
,Ô-Ü	‰%Ð&Ó
'×
+Ñ
+Ó
-Ô.ä	Ð
VÔWÙ	Ð Ó	!€BÜ	ˆ"„IØ	×	Ñ	œ( 3›-Ó	(€BÜ	ˆ"„IÜ	ˆ"‰(„Oä	Ð
9Ô:Ü	Ô
™5Ð!PÓQÓ
RÔSÜ	Ü™ÐUÓVÓWôô 
Ô
™5Ð!@ÓAÓ
BÔCä	Ð
5Ô6Ù	ˆ*Ó×"Ñ"Ô$Ù	ØKóç�l„nÙ	Ð
4Ó5×BÑBÔDÙ	Ð
AÓB×OÑOÔQÙ	Ð
=Ó>×KÑKÖMr5   c                  ó´   €  ^ RI Hp  . ROpT F(  p\        P                  T4      pTP                  4        K*  	  R#   \         d   p\        R4      hRp?ii ; i)r   )rN  z,tkinter is required, but it's not available.N)rF   r¼  z([x],[])z([x],[man(x)])r·  r¸  z\x.([],[man(x), walks(x)])z\x y.([],[sees(x,y)])z)([],[(([],[walks(x)]) + ([],[runs(x)]))])r¹  rº  )rV  rN  ÚImportErrorÚ
ValueErrorr¯   rµ   r  )rN  ró   ÚexpressionsÚds       r6   Ú	test_drawrÆ  –  sW   € ðIÝò€Kó ˆÜ×$Ñ$ QÓ'ˆØ	�‰Žó øô# ô IÜÐGÓHÐHûðIús   ‚< ¼AÁAÁAÚ__main__)>r  Ú	functoolsr   Ú	itertoolsr   Únltk.sem.logicr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú	nltk.utilr   r    r8   r¯   r!   r¡   rå   ræ   r†  r‡  rˆ  ry   rb   r¥   rK  rð  r’   r   rˆ   r›   râ  r(  r0  r�   r?  rî   r  rÀ  rÆ  r(   r'   r5   r6   Ú<module>rÌ     s®  ðó Ý Ý ÷÷ ÷ ÷ ÷ ÷ õ õ6 ô+�ô +ô4�ô 4÷Ddñ dôN|ˆ-˜ô |ò~/ô MÐ3Mô ô"	Ø!Ð#?ô	ô	Ø!Ð#=ô	ô	Ø#Ð%<ô	ô	Ð9Ð;Mô 	ô;4�] Jô ;4ô|
˜=Ð*;ô 
ô$"
˜-Ð)9ô "
ôJ%˜-Ð)9ô %ôP	Ð.Ð0Aô 	ô?Ð*¨Lô ?ôGÐ/Ð1Cô Gô
YÐ+ô Yôx!
˜}Ð.Cô !
òH7ô
>˜$ ¨zô >ô2	 )ô 	ð (*ô P
÷fn5ñ n5òb	%NòPð2 ˆzÔÙ†Fñ r5   