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">)