Appendix C
A's model of the conversation
Bi1:{indicating that conversation can start}
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
Bi2: give-turn(B,A)
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
accedes(B,(turn(A)).
Ai1: take-turn(A)
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
Ai2: inform(A,B,{?X = doesn't have first letter}
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
Bi3: inform(B,A,comprehend(B,?X))
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
Bi4: take-turn(B)
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
wants(B,turn(B)).
Ai3: inform(A,B,comprehend(A,take-turn(B)))
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
mutually-known(wants(B,turn(B))).
Ai4: clarify(A,?X); request(A,B,inform(B,A,{?Y = first letter}))
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
mutually-known(wants(B,turn(B))).
wants(B,clarify(A,?X).
Bi5: take-turn(B)
not(know(A,<first letter>)).
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
mutually-known(wants(B,turn(B))).
wants(B,clarify(A,?X).
Bi6: inform(B,A,?Y = first letter is "O")
wants(A,inform(B,A,<first letter>))
turn(A).
informed(A,B,not(know(A,<first letter>))).
mutually-known(wants(B,turn(B))).
wants(B,clarify(A,?X).
mutually-known(not(know(A,<first letter>))).
not(mutually-known(wants(A,inform(B,A,<first letter>)))).
Ai5: repeat(A,request(A,B,inform(B,A,{?Y = first letter}))),
give-turn(A,B)
wants(A,inform(B,A,<first letter>))
informed(A,B,not(know(A,<first letter>))).
wants(B,clarify(A,?X).
mutually-known(not(know(A,<first letter>))).
mutually-known(wants(A,inform(B,A,<first letter>))).
turn(B).
Bi7: confirm-mutual(request(A,B,inform(B,A,{?Y = first letter}))))
wants(A,inform(B,A,<first letter>))
informed(A,B,not(know(A,<first letter>))).
mutually-known(not(know(A,<first letter>))).
mutually-known(wants(A,inform(B,A,<first letter>))).
turn(B).
Bi8: repeat(B,inform(B,A,?Y = first letter is "O"))
informed(A,B,not(know(A,<first
letter>))).
mutually-known(not(know(A,<first letter>))).
mutually-known(wants(A,inform(B,A,<first letter>))).
knows(A,B,?Y = first letter is "O").
turn(A)
Ai6: acknowledge(A,?Y), confirm-mutual(A,B,?Y)
mutually-known(A,B,<first letter is "O">)
turn(A).
Ai6a: give-turn(A,B)
mutually-known(A,B,<first letter is "O">)
turn(B).
Bi10: inform(B,A,{?Z = second letter is "I"})
mutually-known(A,B,<first letter is "O">)
turn(B).
mutually-known(A,B,<second
letter is "I">)