d/Z?ed0e@e.efd1YZAd2eBfd3YZCgd4ZDd5e-fd6YZEd7ZFd8ZGeHd9kreFndS(:i(tprint_functiontunicode_literalsN(treduce(t string_typestpython_2_unicode_compatible(tAPPtAbstractVariableExpressiont AllExpressiont AndExpressiontApplicationExpressiontBinaryExpressiontBooleanExpressiontConstantExpressiontEqualityExpressiontEventVariableExpressiontExistsExpressiont ExpressiontFunctionVariableExpressiont ImpExpressiontIndividualVariableExpressiontLambdaExpressiontTokenst LogicParsertNegatedExpressiont OrExpressiontVariablet is_eventvart is_funcvart is_indvartunique_variable(tCanvas(tTk(tFont(tin_idlet DrtTokenscBs_eZdZdZdZdZdZdZeeeegZe j eZ e j egeZ RS(uDRSu+uPROu[u]u:( t__name__t __module__tDRStDRS_CONCtPRONOUNt OPEN_BRACKETt CLOSE_BRACKETtCOLONtPUNCTRtSYMBOLStTOKENS(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR"#s t DrtParsercBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZRS(u$A lambda calculus expression parser.cCstj|tgtjD]}|df^qgtjD]}|df^q9tdfggtjtj D]}|df^qmtj dfgtj dfggtj D]}|df^qgtj D]}|df^qd g|_dS( Niiiiiiiii (Ni (Rt__init__tdictR"t LAMBDA_LISTtNOT_LISTRtEQ_LISTRtNEQ_LISTR*R&tOR_LISTtIMP_LISTtNonetoperator_precedence(tselftx((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR/4s cCstjS(u#This method exists to be overridden(R"R,(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytget_all_symbolsBscCs |tjkS(N(R"R-(R9ttok((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt isvariableFscCs)|tjkr|j||S|tjkr>|j||S|tjkr|jdr|jdtjkr|j ||S|j ||Sn|j tj kr|j tj|j ||S|j|r%|jdr|jdtjkr|j||S|j||SndS(ugThis method is intended to be overridden for logics that use different operators or expressionsiN(R"R2thandle_negationR1t handle_lambdatOPENtinRangettokenR(t handle_DRSt handle_opentupperR%tassertNextTokenR=R*t handle_propthandle_variable(R9R<tcontext((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pythandleIs''cCs t|S(N(tDrtNegatedExpression(R9t expression((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytmake_NegatedExpressionbscCso|j}|jdr@|jdtjkr@|jn|j|}|jtjt||dS(Ni( t handle_refsRARBR"tCOMMAt handle_condsRFtCLOSER%R7(R9R<RItrefstconds((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRCes  ' cCs|jtjg}xl|jdr|jdtjkr|rk|jdtjkrk|jn|j|jdqW|jtj|S(Niu quantified( RFR"R(RARBR)ROtappendtget_next_token_variable(R9RR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRNns* cCs|jtjg}xl|jdr|jdtjkr|rk|jdtjkrk|jn|j|j|qW|jtj|S(Ni( RFR"R(RARBR)RORTtprocess_next_expression(R9RIRS((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRPys* cCs;|j|}|jd|jtj}t||S(Nu:(tmake_VariableExpressionRFRVR"R*tDrtProposition(R9R<RItvariabletdrs((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRGs cCs t||S(ulThis method serves as a hook for other logic parsers that have different equality expression classes(tDrtEqualityExpression(R9tfirsttsecond((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytmake_EqualityExpressionscCsM|tjkrdS|tjkr)tS|tjkrEd}|SdSdS(ubThis method serves as a hook for other logic parsers that have different boolean operatorscSst||dS(N(tDrtConcatenationR7(R\R]((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytscSsZt|tr%t|j|j|St|trJt|j|j|StddS(Nu'Antecedent of implication must be a DRS(t isinstanceR%RRRSR_R\R]t Exception(R\R]((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytmake_imp_expressions N(R"R&R5tDrtOrExpressionR6R7(R9R<Rc((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytget_BooleanExpression_factorys cCs |||S(N((R9tfactoryR\R]((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytmake_BooleanExpressionscCs t||S(N(tDrtApplicationExpression(R9tfunctiontargument((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytmake_ApplicationExpressionscCstt|S(N(tDrtVariableExpressionR(R9tname((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRWscCs t||S(N(tDrtLambdaExpression(R9t variablestterm((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytmake_LambdaExpressions(R#R$t__doc__R/R;R=RJRMRCRNRPRGR^ReRgRkRWRq(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR.2s            t DrtExpressioncBseZdZeZedZdZdZdZ dZ dZ ddZ edZdd Zd Zed Zd Zd ZdZdZdZdZdZdZRS(u_ This is the base abstract DRT Expression from which every DRT Expression extends. cCs|jj|S(N(t _drt_parsertparse(tclsts((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt fromstringscCs t||S(N(Rh(R9tother((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytapplytoscCs t|S(N(RK(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__neg__scCs tdS(N(tNotImplementedError(R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__and__scCs"t|tstt||S(N(RaRstAssertionErrorRd(R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__or__scCsot|tstt|tr:t|j|j|St|tr_t|j|j|St ddS(Nu'Antecedent of implication must be a DRS( RaRsR~R%RRRSR_R\R]Rb(R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__gt__s cCsIt|tst|jj}|jj}|j||S(u< 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`` (RaRsR~tsimplifytfoltequiv(R9Rytprovertf1tf2((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs cCstd|jjdS(Nu#'%s' object has no attribute 'type'(tAttributeErrort __class__R#(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyttypescCs tdS(N(R|(R9t signature((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt typecheckscCst||dS(N(R_R7(R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__add__scCs tdS(u Return the set of discourse referents in this DRS. :param recursive: bool Also find discourse referents in subterms? :return: list of ``Variable`` objects N(R|(R9t recursive((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytget_refsscCsIt|toHt|jtoH|jjjtjkoHt|jt S(u Is self of the form "PRO(x)"? ( RaRhRitDrtAbstractVariableExpressionRYRmR"R'RjtDrtIndividualVariableExpression(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytis_pronoun_functionscCs t||S(N(R[(R9R\R]((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR^scCs t|S(N(Rl(R9RY((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRWscCs t|S(N(tresolve_anaphora(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCs|jd|jS(NcSs |jS(N(teliminate_equality(te((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR`s(tvisit_structuredR(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs cCsdj|jS(uG Draw the DRS :return: the pretty print string u (tjoint_pretty(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt pretty_formatscCst|jdS(N(tprintR(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt pretty_print scCst|jdS(N(t DrsDrawertdraw(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRsN(R#R$RrR.Rtt classmethodRxRzR{R}RRR7RtpropertyRRRtFalseRRR^RWRRRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRss*                 R%cBseZdZddZeedZdZedZ dZ dZ dZ dZ d Zd Zd Zd ZejZd ZRS(u%A Discourse Representation Structure.cCs||_||_||_dS(u :param refs: list of ``DrtIndividualVariableExpression`` for the discourse referents :param conds: list of ``Expression`` for the conditions N(RRRSt consequent(R9RRRSR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR/s  c Cs||jkr|s|S|jj|}|jrR|jj||t|}nd}t|j| |jg|j|dg|jD]}|j||t|^q|SnC|rxt |j|j @D]}t |} t | } |jj|}|jr*|jj|| t|}nd}t|j| | g|j|dg|jD]}|j|| t|^q]|}qWn|jr|jj||||}nd}t|jg|jD]}|j||||^q|SdS(u_Replace all instances of variable v with expression E in self, where v is free in self.iN( RRtindexRtreplacetTrueR7R%RYRStsettfreeRRl( R9RYRLt replace_boundt alpha_converttiRtcondtreftnewvartnewvarex((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR s< &(     #(  (cCsgttjg|jD]}|j^qt}|jrV|j|jjn|t|jS(u:see: Expression.free()( Rtoperatortor_RSRRRtupdateRR(R9tct conds_free((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRLs4 cCs]|rR|jtd|jDg}|jrN|j|jjtn|S|jSdS(u#:see: AbstractExpression.get_refs()css|]}|jtVqdS(N(RR(t.0R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pys VsN(RRtsumRSRtextendRR(R9Rt conds_refs((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRSs # cCsDtt||j}|jr:|j||jn||S(u:see: Expression.visit()(tlisttmapRSRRT(R9Rit combinatortparts((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytvisit]s cCsC|jr||jnd}||jtt||j|S(u#:see: Expression.visit_structured()N(RR7RRRRRS(R9RiRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRdscCs|}d}x|t|jkr |j|}t|trt|jtrt|jtrttt |j t |jj g|j| |j|d|j }|jj |jj kr|j |jj |jtt}d}n|d8}n|d7}qWg}xd|jD]Y}|j}|j}t|t sg|j sg|jsg|j r|j|qqW|j r|j jnd}t|j ||S(Nii(tlenRSRaR R\RR]R%RRRRRYRRRRRRTR7(R9RZRRRStnew_condt new_cond_simpR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRis2 ( !     cCs7|jrd}|jrFttg|jD]}|j^q(}n|rgt||jj}n|jj}x-|jdddD]}t||}qW|S|jst dnttg|jD]}|j^q}x?t t |j |jdddD]}t ||}qW|SdS(Niu-Cannot convert DRS with no conditions to FOL.(RR7RSRRRRRRRRbRRt_order_ref_stringsR(R9taccumRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs   . +/cCs0dj|j|j}gg|jD]}td|j^q(D]}|D] }|^qTqJ}tt|gtt t|}dd|dd|j |ddd |d gg|D]}d|j |d^qd d|d g}|j r,t j |tj|j jS|S( Nu cSs |jS(N(tstrip(Rw((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR`su _u_u_ u| u |u|-u-u-|u|_u_|(RRRRRStfilterRtmaxRRRtljustRtDrtBinaryExpressiont_assemble_prettyR"tIMP(R9t refs_lineRt cond_linet cond_linestlengthtlineRZ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs/(] c Csg|D]}d|^q}g}g}g}g}xo|D]g}t|r^|j|q<t|rz|j|q<t|r|j|q<|j|q<Wt|t|ddt|ddt|ddS(Nu%stkeycSs(t|ddgt|ddkS(Niii(tintR(tv((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR`scSs2|dt|ddgt|ddkfS(Niii(RR(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR`scSs2|dt|ddgt|ddkfS(Niii(RR(R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR`s(RRTRRtsorted( R9RRRtstringstind_varst func_varst event_varst other_varsRw((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs    /cCst|trt|jt|jkr|}xGt|j|jD]0\}}|j|}|j||t}qIW|j|jkrt|j t|j krx3t|j |j D]\}}||kst SqWtSqnt S(u}Defines equality modulo alphabetic variance. If we are comparing \x.M and \y.N, then check equality of M and N[x/y].( RaR%RRRtzipRWRRRRSR(R9Rytconverted_othertr1tr2tvarextc1tc2((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__eq__s""  cCs ||k S(N((R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__ne__scCstddj|j|jdjd|jDf}|jrptj|dtjdd|jtjS|S(Nu ([%s],[%s])u,u, css|]}d|VqdS(u%sN((RR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pys su u%s( RRRRRSRR"R@RRQ(R9RZ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt__str__s   ,N(R#R$RrR7R/RRRRRRRRRRRRRRt__hash__R(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR%s ,          cCsYt|jrt|St|jr2t|St|jrKt|St|SdS(u This is a factory method that instantiates and returns a subtype of ``DrtAbstractVariableExpression`` appropriate for the given variable. N(RRmRRtDrtFunctionVariableExpressionRtDrtEventVariableExpressiontDrtConstantExpression(RY((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRls   RcBs/eZdZedZdZdZRS(cCs|S(N((R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCsgS(u#:see: AbstractExpression.get_refs()((R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCs*d|}dt|}||||gS(Nu%su (R(R9Rwtblank((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs cCs|S(N((R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs(R#R$RRRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs   RcBseZRS((R#R$(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRsRcBseZRS((R#R$(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRsRcBseZRS((R#R$(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRsRcBseZRS((R#R$(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR sRXcBs}eZdZeedZdZedZdZdZ e j Z dZ dZ dZd Zd ZRS( cCs||_||_dS(N(RYRZ(R9RYRZ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR/s cCsx|j|krOt|ts*tdt|j|jj||||St|j|jj||||SdS(Nu4Can only replace a proposition label with a variable(RYRaRR~RXRZR(R9RYRLRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs%cCst|j|jjS(N(RXRYRZR(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCs|r|jjtSgS(N(RZRR(R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCs4|j|jko3|j|jko3|j|jkS(N(RRYRZ(R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR!scCs ||k S(N((R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR&scCs |jjS(N(RZR(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR+scCs|jj}dtd|j}g|d D]}|d|^q1g|dd!D]}d|jd|^qVg|dD]}|d|^qS(Nu u%siiu:(RZRRRY(R9tdrs_sRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR.sOcCs|||jgS(u:see: Expression.visit()(RZ(R9RiR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR5scCs||j||jS(u#:see: Expression.visit_structured()(RYRZ(R9RiR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR9scCsd|j|jfS(Nu prop(%s, %s)(RYRZ(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR=s(R#R$R/RRRRRRRRRRRRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRXs          RKcBs&eZdZedZdZRS(cCst|jjS(N(RRpR(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRBscCs|jj|S(u#:see: AbstractExpression.get_refs()(RpR(R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyREscCs|jj}g|d D]}d|^qg|dd!D]}d|^q;g|dd!D]}d|^q]g|dD]}d|^q|S(Niu iu__ iu | (RpR(R9t term_linesR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRIsb(R#R$RRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRKAs  RncBs#eZdZdZdZRS(cCs+|j||jj|jt|tS(uRename all occurrences of the variable introduced by this variable binder in the expression to ``newvar``. :param newvar: ``Variable``, for the new variable (RRpRRYRlR(R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRQscCst|j|jjS(N(RRYRpR(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRYscCs|jg}|j}x/|j|jkrF|j|j|j}qWdjd|Dtj}|j}dt|}g|d D]}d||^qg|dd!D]}d||^qg|dd!D]}d||^qg|dD]}d||^qS( Nu css|]}d|VqdS(u%sN((RR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pys bsiu iu \ iu /\ ( RYRpRRTRR"tDOTRR(R9RoRpt var_stringRRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR\s     n(R#R$RRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRnPs  RcBs5eZedZdZedZdZRS(cCs*|r&|jjt|jjtSgS(u#:see: AbstractExpression.get_refs()(R\RRR](R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRkscCs1tj|j|j|j|j|jS(N(RRt _pretty_subexR\tgetOpR](R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRoscCs tt|t|}t||}t||}dt|}tt||}g|d D]*\}}d|d|d|d^qig|dd!D]*\}}d|d|d|d^qg|dD]*\}}d|d|d|d^qS(Nu iiu(u)(RRt_pad_verticallyRR(t first_linestopt second_linest max_linesRtfirst_second_linest first_linet second_line((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRrstcCs |jS(N(R(R9tsubex((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR}s(R#R$RRRt staticmethodRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRjs   tDrtBooleanExpressioncBseZRS((R#R$(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRsRdcBseZdZdZRS(cCst|jj|jjS(N(RR\RR](R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCsCt|tr3g|jD]}|dd!^qStj||S(Nii(RaRdRRR(R9RR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs$(R#R$RR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRds R[cBseZdZRS(cCst|jj|jjS(N(R R\RR](R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs(R#R$R(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR[sR_cBseZdZddZeedZdZdZ edZ dZ dZ dZ ejZd Zd Zd Zd Zd ZdZRS(uDRS of the form '(DRS + DRS)'cCs tj|||||_dS(N(RR/R(R9R\R]R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR/sc Cs|j}|j}|j}||jkr|rq|j||||}|j||||}|r|j||||}qqqn|r xt|jt|j@D]i}tt |} |j|| t|}|j|| t|}|r|j|| t|}qqWn|j||||}|j||||}|rq|j||||}n|j |||S(u_Replace all instances of variable v with expression E in self, where v is free in self.( R\R]RRRRRRRlRR( R9RYRLRRR\R]RRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs*   !&"cCs,|j}t|t s"t|jS(N(RRaR_R~R(R9RZ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs cCs|jj}|jj}|jr6|jjnd}t|trt|trxWt|jt t|jt @D]-}t t |}|j ||t }qWt|j |j |j|j|S|j|||SdS(N(R\RR]RR7RaR%RRRRlRRRRRSR(R9R\R]RRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs/$cCsQ|jj||jj|}|jrM|rM|j|jjtn|S(u#:see: AbstractExpression.get_refs()(R\RR]RRR(R9RRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs"cCstjS(N(R"R&(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCst|tr|j}|j}t|t|kr|}xAt||D]0\}}|j|}|j||t}qUW|j|jko|j |j ko|j |j kSnt S(u}Defines equality modulo alphabetic variance. If we are comparing \x.M and \y.N, then check equality of M and N[x/y].( RaR_RRRRWRRR\R]RR(R9Ryt self_refst other_refsRRRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs  cCs ||k S(N((R9Ry((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCsIt|jj|jj}|jrEt||jj}n|S(N(RR\RR]RR(R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs! cCsgtj|j|j|j|j|j}|jrctj|tj|j |j}n|S(N( RRRR\RR]RR"RR(R9RZ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs  cCsCt|tr3g|jD]}|dd!^qStj||S(Nii(RaR_RRR(R9RR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs$cCs]|jr7|||j||j||jgS|||j||jgSdS(u:see: Expression.visit()N(RR\R](R9RiR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs .cCs|j|j}|j|j}tj|d|jd|tj}|jrtj|dtj dd|jtjS|S(Nu u%s( t _str_subexR\R]RR@RRQRR"R(R9R\R]RZ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs * ,cCs7d|}t|tr3|jdkr3|dd!S|S(Nu%sii(RaR_RR7(R9RRw((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs  N(R#R$RrR7R/RRRRRRRRRRRRRRRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR_s             RhcBs&eZdZedZdZRS(cCst|jj|jjS(N(R RiRRj(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCs*|r&|jjt|jjtSgS(u#:see: AbstractExpression.get_refs()(RiRRRj(R9R((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRsc CsP|j\}}|j}g|D]}|j^q%}ttt|g|}t||}g|D]}t||^qo}tt|tt|}g|d D]'\} } | ddj| d^qg|dd!D]'\} } | ddj| d^qg|dD]'\} } | ddj| d^q$S(Niu iu(u,u)( tuncurryRRRRRRRR( R9Ritargstfunction_linestargt args_linesRt arg_linestfunc_args_linest func_linet args_line((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR!s "!n(R#R$RRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRhs  cCs-dt|dg}|||t|S(Nu i(R(tlinesRtpad_line((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR.stPossibleAntecedentscBs2eZdZeedZdZdZRS(cCs t|S(uSet of free variables.(R(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR5scCsGt}x7|D]/}||kr2|j|q|j|qW|S(u_Replace all instances of variable v with expression E in self, where v is free in self.(RRT(R9RYRLRRtresulttitem((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR9s    cCs'd|}dt|}|||gS(Nu%su (R(R9RwR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRDs cCsddjd|DdS(Nu[u,css|]}d|VqdS(u%sN((Rtit((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pys Jsu](R(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRIs(R#R$RRRRRR(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR3s  tAnaphoraResolutionExceptioncBseZRS((R#R$(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRMscCsFt|tr |jrt}xi|D]a}xX|jD]J}|j|}|j|jjkr>||jk r>|j|q>q>Wq+Wt |dkr|d}n|}|j |j|St |j ||g}t |j||g}|j||Sn5t|t rg} x|jD]} t | ||g} t| trt| jtr| j} | j| _| | _nt| jtr| jstd| jqqn| j| q,W|jrt |j||g} nd} |j|j| | St|tr&|St|trU|jt |j||gSt|tr|jrt |j||g} nd} |jt |j||gt |j||g| St|tr |jt |j||gt |j||gSt|trB|j|jt |j||gSdS(Niiu+Variable '%s' does not resolve to anything.(RaR RRRRWRRjRTRR^RRiR%RSR R\R]RRR7RRRRRpR_R RRY(RLttrailtpossible_antecedentstancestorRtrefext resolutiont r_functiont r_argumenttr_condsRtr_condttempR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRQsd           RcBseZdZdZdZeddZdZeedZ dZ dZ dZ d d d Z d Zd Zd ZdZdZdZdZdZRS(ii ic Csd }|st}|jdtdddd}|rt|dddd}||_||_|j||j|j \}}t ||jd }||j} t|d|d| }nt|dd dd }|j ||_n||_||_ ||_ d S( u :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. uDRTtfamilyu helveticatsizei twidthitheightidi,N(R7RttitleR Rtfonttcanvast_visitt OUTERSPACEtTOPSPACERtpackRZtmaster( R9RZt size_canvasRRRtrighttbottomRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR/s&    !     cCs|jjjdS(u Get the height of a line of textu linespace(RRtmetrics(R9((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt_get_text_heightscCsY|j|j|j|||jr?t r?|jjn|j|j||SdS(u Draw the DRSN(t_handleRZt _draw_commandRR!tmainloopR(R9R:ty((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRscCs|j||j||S(u! 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 (R#t_visit_command(R9RLR:R&((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs c Cst|tr=|jj||ddd|jjd|nkt|tr|\}}|jj||||||j|jd}|jj ||||n|j |||S(u 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 tanchorunwRttexti( RaRRt create_textRttupletcreate_rectangleR"tBUFFERt create_lineR'(R9RR:R&RR t horiz_line_y((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR$s . cCsMt|tr6||jjj|||jfSt|trI|SdS(u 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(RaRRRtmeasureR"R+(R9RR:R&((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR's 'icCsw||jkrNy(|j|}|j|}||fSWqNtk rJqNXnt|tri|j}nt|tr|j}nt|t r|j }nt|t r|j }n~t|t r|j}nct|tr|j}nHt|tr |j}n-t|tr&|j}nt|jj|||||\}}|||_|||_||fS(u1 :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 (R't_drawing_widtht_drawing_heightRRaRt_handle_VariableExpressionR%t _handle_DRSRKt_handle_NegatedExpressionRnt_handle_LambdaExpressionR t_handle_BinaryExpressionRht_handle_ApplicationExpressionRRXt_handle_DrtPropositionRbRR#(R9RLtcommandR:R&RR Rf((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR#s8             cCs|d|||S(Nu%s((R9RLR:R:R&((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR3&scCss|jtj||d}|j|j|||\}}|tj||j||||j||fS(Ni(R'R"tNOTR#Rpt_get_centered_topR"(R9RLR:R:R&RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR5)s!,c Cs||j}||j}|jrBdjd|jD}nd}||||\}}||jd7}|jrxe|jD]@} |j| |||\} }t|| }||j7}qWn||j|j7}||j7}|||f||S(Nu css|]}d|VqdS(u%sN((Rtr((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pys ;su i(R-RRRRSR#RR"( R9RLR:R:R&tleftR RRt max_rightRR((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR45s     cCs|j\}}t|ts9|j}|jg}n|j|||d}t|gg|D]}|j|||d^qb} | |} |j|| |j} |j |||| d} |j|| |j } |t j | | d} xt |D]v\}}|j|| |j}|j ||| |d} |dt|kr |t jd| | d} q q W|t j| | d} | | fS(Niiu (RRaRRiRjRRR<R2R#R"R"R@t enumerateRRORQ(R9RLR:R:R&RiRtfunction_bottomRt max_bottomt line_heighttfunction_drawing_topRtcentred_string_topRtarg_drawing_top((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR8Ns$ 9 $cCstjd|jtj}|j|||d}|j|j|||\}}||||j||||j||fS(Nu%si( R"tLAMBDARYRR'R#RpR<R"(R9RLR:R:R&RoRR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR6qs !)c Cs?|j|jddd}|j|jddd}t||}|j|||j}|tj||d} |jj}|j |j|| |j|||\} } |d|j | |d} |jj}|j |j|| |j|||\} } |tj | |d} | t| | fS(Niiu %s ( RR\R]RR<R"R"R@R2R#RRQ( R9RLR:R:R&t first_heightt second_heightRCRERt first_bottomt second_bottom((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR7~s 0  0cCsD||j||d}|j|j|||\}}||fS(Ni(RYR#Rp(R9RLR:R:R&RR ((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR9s!cCs|||dS(uGet 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.i((R9ttopt full_heightt item_height((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyR<sN(R#R$R-RRRR7R/R"RRR$R'R#R3R5R4R8R6R7R9R<(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyRs$   .   #  cCstdddtj}t|dt|dt|dt|dt|dt|d t|d t|d t|d tdd dt|djtddd |d}t||jtd}t|t||ktd!dd"tt|dtt|dtt|dtd#dd$|dj|dj|dj|dj|djdS(%Nu=iu TEST PARSEu([x,y],[sees(x,y)])u([x],[man(x), walks(x)])u\x.\y.([],[sees(x,y)])u\x.([],[walks(x)])(john)u$(([x],[walks(x)]) + ([y],[runs(y)]))u#(([],[walks(x)]) -> ([],[runs(x)]))u([x],[PRO(x), sees(John,x)])u ([x],[man(x), -([],[walks(x)])])u*([],[(([x],[man(x)]) -> ([],[walks(x)]))])u Test fol()u4Test alpha conversion and lambda expression equalityu\x.([],[P(x)])uzuTest resolve_anaphora()u,([x,y,z],[dog(x), cat(y), walks(z), PRO(z)])u3([],[(([x],[dog(x)]) -> ([y],[walks(y), PRO(y)]))])u(([x,y],[]) + ([],[PRO(x)]))uTest pretty_print()u([],[])u@([],[([x],[big(x), dog(x)]) -> ([],[bark(x)]) -([x],[walk(x)])])u'([x,y],[x=y]) + ([z],[dog(z), walk(z)])u4([],[([x],[]) | ([y],[]) | ([z],[dog(z), walk(z)])])u0\P.\Q.(([x],[]) + P(x) + Q(x))(\x.([],[dog(x)]))u====================u====================u====================u====================u====================u====================u====================u====================u====================u====================(RRsRxRRRRR(tdexprte1te2((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytdemos:    c Csyddlm}Wn-tk rCddlm}|dnXddddd d d d d ddg }x'|D]}tj|}|jqrWdS(Ni(R(tSkipTestu,tkinter is required, but it's not available.uxu([],[])u([x],[])u([x],[man(x)])u([x,y],[sees(x,y)])u([x],[man(x), walks(x)])u\x.([],[man(x), walks(x)])u\x y.([],[sees(x,y)])u)([],[(([],[walks(x)]) + ([],[runs(x)]))])u ([x],[man(x), -([],[walks(x)])])u*([],[(([x],[man(x)]) -> ([],[walks(x)]))])(ttkinterRt ImportErrortnoseRSRsRxR(RRSt expressionsRtd((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pyt test_draws&   u__main__(It __future__RRRt functoolsRt nltk.compatRRtnltk.sem.logicRRRRR R R R R RRRRRRRRRRRRRRRRRTRRt tkinter.fontR t nltk.utilR!RUR"R.tobjectRsR%RlRRRRRRXRKRnRRRdR[R_RhRRRRbRRRRRRYR#(((s^/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/sem/drt.pytsX   |e 2   H $