could be specified by means of SCs possibly nested in it. Anyway, a further property is required to SCs with cardinal selection condition in order to be **well-formed.**
In particular, given a non-simple SC s **(with cardinal selection condition), all the**
SCs nested in s **with cardinal condition must not exceed the cardinality constraints** expressed by cond(s).

## Example 5

The SC s = [1, 8]{a, [3, 6]{b, [**Agent**2
]{c, d}}} is well-formed. Note that the nonsimple SCs s1 = [**Agent**3

]{a, [3, 6]{b}} and s2 = [4, 7]{a, [3, 9]b} **are not wellformed, because** cond(s1) is a member selection condition and, concerning s2**, [3**, 9]b ∈
skel(s2) and [3, 9] 6⊆ [4, 7].

From now on, we consider only well-formed SCs. We introduce now the notion of rule. Our definition generalizes the notion of classical logic rule.

## Definition 2

Given an integer n > **0, a (**n-)social rule r is a formula a ← b1∧ · · · ∧bm ∧s1**∧ · · · ∧**sk
(m ≥ 0, k ≥ 0), where a is an atom, each bi (1 ≤ i ≤ m**) is a literal and each** sj
(1 ≤ j ≤ k) is either a n-SC or the NAF of a n**-SC.**
Concerning the above definition, the atom a **is referred to as the** head of r **, while**
the conjunction b1 ∧ · · · ∧ bm ∧ s1 ∧ · · · ∧ sk **is referred to as the** body of r .

In case a is of the form okay(p), where p is an atom, then r **it is referred to as**
(n-)tolerance (social) rule. In case k **= 0, then a social non-tolerance rule is referred** to as classical rule.

Social tolerance rules, i.e. rules with head of the form okay(p**), encode tolerance**
about the occurrence of p. The rule okay(p) ← body differs from the rule p ← **body**
since the latter produces the derivation of p **whenever** body **is satisfied, thus encoding**
something that is required **under the condition expressed by** body**. According to the**
former rule (okay(p) ← body**), the truth of** body does not necessarily imply p**, yet**
its derivation is not in contrast with the intended meaning of the rule itself. In this sense, under the condition expressed by body, p **is just** tolerated.

Given a rule r , we denote by head(r ) (resp. body(r **)) the head (resp. the body) of**
r . Moreover, r **is referred to as a** fact in case the body is empty, while r **is referred** to as an integrity constraint **if the head is missing.** Example 6 An example of non-tolerance social rule is a ← b, c, [1, 9]{b, c,not g, [1, 4]{d}}, [P2]{d}. An example of tolerance social rule is **okay**(a) ←not b, c, [1, 6]{a,not f , g},not [P2]{d}.

## Definition 3

A SOLP collection is a set {P1, · · · ,Pn} **of SOLP programs, where each SOLP**
program is a set of n**-social rules.**
A SOLP program is positive **if no NAF symbol** not **occurs in it. For the sake of**
presentation we refer, in the following sections, to ground **(i.e., variable-free) SOLP**
programs - the extension to the general case is straightforward.