package edu.stanford.nlp.sempre.tables.lambdadcs; import edu.stanford.nlp.sempre.Value; import fig.basic.LispTree; /** * Represents a BinaryDenotation. * * By LambdaDCS convention, (v <= k) means that k maps to v. * * The following operations must be handled: * - Reverse * - reverse(BL) * - Compose * - Join: BL.UL * - Superlative: argmax(UL, BL), ... * * @author ppasupat */ public interface Binarylike { public LispTree toLispTree(); public Value toValue(); /** Return all (y <= x) such that (x <= y) is in this binary */ public Binarylike reverse(); /** Return all v such that for some k in keys, (v <= k) is in this binary */ public UnaryDenotation joinOnKey(UnaryDenotation keys); /** Return all k such that for some v in values, (v <= k) is in this binary */ public UnaryDenotation joinOnValue(UnaryDenotation values); /** Return all (v <= k) such that k is in keys and (v <= k) is in this binary */ public BinaryDenotation<ExplicitPairList> explicitlyFilterOnKey(UnaryDenotation keys); /** Return all (v <= k) such that v in values and (v <= k) is in this binary */ public BinaryDenotation<ExplicitPairList> explicitlyFilterOnValue(UnaryDenotation values); }