3
dO                 @   s0   d Z ddlT dd Zdd Zdd Zd	d
 ZdS )z0
Helper functions for CCG semantics computation
    )*c             C   sr   | }d }xt |tr |}|j}q
W td}x||j krDt|d}q,W tt||}|d k	rd||_n|} t|| S )NF)pattern)
isinstanceLambdaExpressiontermVariablefreeZunique_variableApplicationExpressionZFunctionVariableExpression)Z	semanticscoreparentvar r   ./tmp/pip-build-v9q4h5k9/nltk/nltk/ccg/logic.pycompute_type_raised_semantics   s    
r   c             C   s   t | |j S )N)r
   simplify)functionargumentr   r   r   compute_function_semantics"   s    r   c             C   s6   t |tstdt| d t|jt| |jj S )N`z` must be a lambda expression)r   r   AssertionErrorstrvariabler
   r   r   )r   r   r   r   r   compute_composition_semantics&   s    r   c             C   sx   t | trt | jts*tdt|  d t |tsHtdt| d t|t| jj }t| j|j }t| j|S )Nr   z.` must be a lambda expression with 2 argumentsz` must be a lambda expression)	r   r   r   r   r   r
   ZVariableExpressionr   r   )r   r   Znew_argumentZnew_termr   r   r   compute_substitution_semantics/   s    r   N)__doc__Znltk.sem.logicr   r   r   r   r   r   r   r   <module>	   s
   	