In this section we describe some of the rules and algorithm definitions we use. The current algorithms are very simple and the behaviour of the system is therefore mainly dependent on the definitions of the update and selection rules.
Update algorithm:
Selection algorithm:
Control algorithm:
The update rules include rules for question and plan accommodation, as well as rules for handling grounding and rules for integrating the latest move with the DIS. The latter rules look different depending on whether the user or the system itself was the agent of the move. As an illustration, below we first see the update rule for integrating an ``answer'' move when performed by the user, and second the converse rule for the case when the latest move was performed by the system*.
In the current implementation, interpretation and generation are canned, which means that the range of input and output strings is very restricted. However, it is also possible to communicate using moves directly, e.g. by typing ask(P^(price=P)) instead of 'What is the price?'.
The semantics (if it deserves the name) represents propositions as pairs of features and values, e.g. (month=april), and questions are lambda-abstracts over propositions, e.g. X^(month=X). A set of propositions and a query together constitute a database query which is sent to the database once the system has received sufficient information to be able to answer the question. A question and an answer can be reduced to a proposition using beta-reduction. For example, the question X^(month=X) and the answer april yield the proposition [X^(month=X)](april), i.e. (month=april).