Comme pour les jeux, les agents peuvent être génériques. L'agent de base est par exemple paramétré par la profondeur maximale du moteur d'inférence.
agent agent_de_base(PROF) =
{
start = jeu_de_base,
games = { question(_), reponse(_) },
depth = PROF,
kb =
{
nonvar(Q) | x b (P->Q) and x b P then x b Q,
nonvar(P) | x b (P->Q) and x b -Q then x b -P,
x b (p(X)->(X a Q)),
nonvar(P) | (x b P) or (x b -P) then x kif P
}
}.
agent agent_evolue(PROF) =
{
import agent_de_base(PROF),
kb =
{
x b p(a1)
}
}.
On notera la différence entre <<import>> et <<accointance>>. <<import>> importe une description d'agent. <<accointance>> importe une description tranformée pour servir de représentation de l'autre.
agent a1 =
{
import agent_de_base(1),
accointance = agent_de_base(1),
games = { conflit(_) },
kb =
{
x w x kif q,
x b p(x)
}
}.
agent a2 =
{
import agent_de_base(1),
games = { mefiance(_) },
kb=
{
x b q
}
}.