Hi Richard, We might need to iterate over my suggestions, especially since I changed the character of most of the rules that you sent. Let me know if you have any questions, or if anything looks like a misinterpretation of what you had intended. Also, I think I was consistent, but if some of the variables (which are prepended with a ?) look odd, let me know. Best, Will I'll rewrite these rules w/o using triples, but I'll show the first one in triple form to suggest what it'll look like. I treat inform and say as actions and opt to distinguish between actions (isAct in triples) and relations (isRel) and objects (isA). AbRA won't like the nested actions, says, informs, etc., but it might be easier for us poor humans to initially work with the nested representation. (inform (listener speaker belief) (before (isA speaker [speaker]) (isA listener [listener]) (isA belief [belief]) (belief speaker belief)) ) (do (say speaker belief) ) (then (belief listener belief) (belief listener (belief speaker belief)) ) ) (action ?time (inform ?l1 ?s1 (that ?x))) <= (action ?time (say ?s1 (that ?x))) (belief ?l1 ?x) (belief ?l1 (belief ?s1 ?x)) I suppose you can interpret "X <= Y" symbol to mean "X identifies a pattern comprising itself and Y." RWW: You haven't actually written "X <= Y" you wrote X <= A B C Can I assume you meant X <= A B C or is it some other grouping Example 1/ (Assume the content of the utterance is expressed as "(fu bar)"). I hear you say (fu bar) at time t1. (action t1 (inform me you (that (fu bar)))) (action t1 (say you (that (fu bar)))) (belief me (fu bar)) (belief me (belief you (fu bar))) Because there is an implied belief modality for the current agent (me), the system interprets these as the following. (belief me (action t1 (inform me you (that (fu bar))))) (belief me (action t1 (say you (that (fu bar))))) (belief me (belief me (fu bar))) (belief me (belief me (belief you (fu bar)))) The modal representation (belief me (belief me X)) resolves to (belief me X) and eventually just X in the system's model of itself. RWW: this is clear RWW: I still worry about the idea that (action ?time (say ?Y (that ?X))) justifies (belief me ?x) or even (belief me (belief ?Y ?X)) It must rely on 1) my 'trusting' Y (he's not a lier) 2) my beleiving that he know about the 'subject matter' of ?X 3) that it is still true and has the strange consequenses 1) since the belief is not time stamped it means that for me its always was and will forever be true? 4) talking to oneself not what I believe but what I say to myself is de facto true!!!!! (action ?t (say me (that ?X))) results in (belief me ?X) If both (action t1 (inform me you (that (fu bar)))) (action t1 (say you (that (fu bar)))) are necessary to 'trigger' the beliefs, I like this better but now that I write this I wonder if I misunderstood the intent of your notation so ? what happens when in the system re an action? I think I am confused - so I want to stop ranting until I inderstand more Richard Example 2/ I tell you (fu bar) with an attempt to inform. (action t1 (inform you me (that (fu bar)))) (action t1 (say me (that (fu bar)))) (belief you (fu bar)) (belief you (belief me (fu bar))) Both actions are stuffed into my model of myself. The explicit beliefs are stored in my-model-of-you and my-model-of-your-model-of-me respectively. Example 3/ I hear Bob tell Sally (fu bar). (action t1 (inform sally bob (that (fu bar)))) (action t1 (say bob (that (fu bar)))) (belief sally (fu bar)) (belief sally (belief bob (fu bar))) Both actions are stuffed into my model of myself. The explicit beliefs are stored in my-model-of-sally and my-model-of-sally's-model-of-bob respectively. Now I might also opt to believe (fu bar) because I overheard the conversation, but I don't have to. I might have to fire a rule that says that Bob was also informing me, or I might fire a rule that deals with how eavesdropping affects my beliefs about the content of statement. In triples, we get (action ?time (inform ?l1 ?s1 (that ?x))) <= (action ?time (say ?s1 (that ?x))) (belief ?l1 ?x) (belief ?l1 (belief ?s1 ?x)) (isAct ?a1 inform) (listener ?a1 ?l1) (speaker ?a1 ?s1) (content ?a1 ?c1) (thatRel ?c1 ?r1) (time ?a1 ?time) (isAct ?a2 say) (speaker ?a2 ?s1) (content ?a2 ?c1) (time ?a2 ?time) ;; notice that modal operators are still nestable. (belief ?l1 (isRel ?c1 ?r1)) (belief ?l1 (belief ?s1 (isRel ?c1 ?r1))) (where-is (listener speaker where-is-loc entity) (before (isA speaker [speaker]) (isA listener [listener]) (isA where-is-loc Enum['Geography,On-His-Body,On-Issue, ...]) (isA amount [amount]) ) (do (say speaker *(where-is ,where-is-type ,entity)) ) (then (goal listener (do (answer-question speaker *(where-is ,where-is-loc ,entity)))) ) ) This case is difficult because we haven't talked about questions in any level of detail, and we never got a reply from the natural language side when we asked how they were going to represent questions. As a result, I'm making this up based entirely on what you wrote. (action ?time1 (question ?l1 ?s1 (where-is ?type ?entity))) <= (action ?time1 (say ?s1 (that (where-is ?type ?entity)))) (goal ?l1 (action ?time2 (answer-question ?l1 ?s1 (where-is ?type ?entity)))) We may not represent the process involved in answering the question. That might be carried out through a "primitive action" which is a code word for an executable, non-declarative process that interacts with the environment. Also known as "magic". We can also store constraints on the rules that will let us state (< ?time1 ?time2), but let's ignore those for the time being. (reply-to-question (listener speaker question) (before (isA speaker [speaker]) (isA listener [listener]) (isA question [question]) ) (do (if (isAnswer ?answer question) (say speaker *(reply-to-question ,question ,answer)) (say speaker *(reply-to-question ,question 'I-dont-know-the-answer)) ) ) (then (belief listener (heard speaker request)) ) ) Listener asked a question and is now hearing the reply from the speaker. (action ?time1 (reply-to ?l1 (question ?s1 ?l1 ?q))) <= (action ?time2 (say ?s1 (that ?x))) (belief ?l1 (belief ?s1 (action ?time0 (question ?s1 ?l1 ?q)))) I've altered this one quite a bit. I'm not satisified with this pattern because there's more to "reply-to" than captured in either case. It may be necessary to process the content of the statement ?x to know whether it's a reply. Before we can determine how to better express reply-to we might need to know what the other options are. For instance, a request to repeat a la, "What was that?" or if you're in Cincinnati, "Pardon?" might also occur. ; acknowledge the latest speech act (acknowledge (listener speaker speech-act-name) (before (isA speaker [speaker]) (isA listener [listener]) (isA speech-act-name [speech-act-name]) (the-last-speech-act-called ?speech-act speech-act-name) ) (do (say speaker *(acknowledge ,speech-act-name)) ) (then (belief listener (heard speaker ?speech-act)) ) ) Speaker acknowledges a previous speech act by the listener. (action ?time1 (acknowledge ?l1 ?s1 (action ?time0 (say ?l1 (that ?x))))) <= (action ?time1 (say ?s1 (acknowledge ?l1 ?time0))) (belief ?l1 (belief ?s1 (action ?time0 (say ?l1 (that ?x))))) Okay, I did my best here. I think we can connect the acknowledgement to a specific statement through the time stamp. I realize that the agent might be acknowledging something other than what was just said---for instance, a friend in the distance, the nervous tick of the other agent, that time is passing. However, this acknowledge implicitly ranges over speech acts. So there.