One useful approach to this is inductive logic programming, in which sets of specific statements are converted into a more general form. Closely related to logic programming, the inductive nature of the technique implies that new rules are generated, typically in first order clausal form. Abstract representation of more general form is useful in engineering software agents, because it can accommodate varied or missing facts. In case-based reasoning, episodes of agents communicating, negotiating and operating are compared to new and novel situations. This topic would involve exploring the utility of hierarchical Bayesian conditioning as a way of comparing cases.
Relevant technologies involve Bayesian probability, causality and graph matching.
This topic involves semantically defining what an agent is capable of doing, and how it can go about achieving those operations. Formally specifying what an agent can do, or is capable of, can significantly simplify the task of engineering agents with reliable properties.