the individual reasoning, we remark that our focus is basically concerning to the knowledge-representation aspects, with no intention to investigate how this reasoning layer **could be exploited in the intelligent-agent contexts. However, in Section 8,**
we relate our work with some conceptual aspects belonging to this research field.

Consider now the first example.

Example 1 There are four agents which have been invited to the same wedding party. These are the desires of the agents:
Agent1 **will go to the party only if at least the half of the total number of agents**
(not including himself) goes there.

Agent2 possibly does not go to the party, but he tolerates such an option. **In case**
he goes, then he possibly drives the car.

Agent3 would like to join the party together with Agent2**, but he does not trust**
on Agent2**'s driving skill. As a consequence, he decides to go to the party only** if Agent2 **both goes there and does not want to drive the car.**
Agent4 **does not go to the party.**
Now, assume that some agents are less autonomous than the others, i.e. they may decide either to join the party or not to go at all, possibly depending on the other agents' choice. Moreover some agents may not require, yet tolerate some options.

The standard approach to representing communities by means of logic-based agents (Satoh and Yamamoto 2002; Costantini and Tocchio 2002; **De Vos et al. 2005;**
Alberti et al. 2004; Subrahmanian et al. 2000) is founded on suitable **extensions of** logic programming with negation as failure (not**) where each agent is represented** by a single program whose intended models (under a suitable semantics) are the agent's desires/requests. Although we take this as a starting point, it is still not suitable to model the above example because of two following issues:
1. There is no natural representation for tolerated options, i.e. options which are not requested, but possibly accepted (see **Agent**2).

2. A machinery is missing which enables one agent to reason about the **behaviour**
of other agents (see Agent1 and **Agent**3).

In order to solve the first issue (item 1.) we use an extension of standard logic programming exploiting the special predicate okay**(), previously introduced in (Buccafurri and Gottlob 2002).**
Therein a model-theoretic semantics aimed to represent a common agreement in a community of agents was given. However, representing the requests/acceptances of single agents in a community is not enough. Concerning item 2 above, a social language should also provide a machinery to model possible interference among agents' reasoning (in fact it is just such an interference that distinguishes the social reasoning from the individual one). To this aim, we introduce a new construct providing one agent with the ability to reason about other agents' mental state and then to act accordingly.

Program rules have the form:
head ← [selection condition]{body},