title: AI: Partial Unification in Open-World Reference Resolution
body: <p>When performing reference resolution on predicates describing the semantics of dialogue expressions, I need to be able to allow for partial unification due to working in an open world.</p>
  
  <p>For example, consider the following scenario:</p>
  
  <p>There is a blue box in front of you.
  We refer to this blue box using the id <code>3</code>.</p>
  
  <p>A set of predicates <code>box(x)^blue(x)</code> can easily resolve to the blue box you know about. Making this query will return <code>3</code></p>
  
  <p>A set of predicates <code>ball(x)^yellow(x)</code> will not resolve to anything. This is fine.</p>
  
  <p>But now consider <code>ball(x)^yellow(x)^box(y)^blue(y)^behind(x,y)</code> <em>that is, the yellow ball behind the blue box.</em></p>
  
  <p>We don't know about a yellow ball, but we do know about a blue box! Of course it's possible that there's no ball behind the known box and that another box was being spoken of. But we're pretty sure we know what box is being talked about. </p>
  
  <p>I am working within a probabilistic framework in which I calculate the probability of each set of bindings satisfying the set of propositions; the reference resolution process then returns the most likely unifier/set of bindings. Unfortunately, when considering <code>behind(x,y)</code>, my system wipes out the probability of <code>3</code> being bound to <code>y</code> because it does not know of any yellow balls behind the box with id <code>3</code>. </p>
  
  <p>Is there a way to do <em>partial</em> unification of predicates, so that the system determines that the most likely resolution of the statement is <code>y/3 x/?</code> i.e. y is bound to 3 and the identity of x is unknown?</p>