much greater example, involving two different copies of the example of the diagram, linked through an additional small set of data. This ends up **with** an example with more than a hundred symbols and more than 10 different explanation atoms for some (I, J**). This is not a "real world example" yet,** but it is not too small, and it shows that we are close to realistic examples. Hopefully, the progress in ASP systems will make that in a near future real world examples could work.

As explained below, we have encountered a fourth problem, not listed in the "three problems" evoked above. Indeed, for this "big example", the full program, including simplification and testing the set of conditions, did not work on our computer (crash after more than one hour...). However, since the simplification/optimization step is clearly separated from the first generating step, and since the verification is separated also, we have separated the program into three successive programs:
The first one generates explanation atoms (not all of them, but sufficiently many to be able to retrieve all the optimal ones from those produced here).

Then, starting from the results of this first program, a second program makes all the relevant simplifications and optimizations, in order to help reading the set of the solutions. The simplification does not take disjunction into account as in the powerful rule in Point 3c in §**2.2, rather it corresponds to** Point 3c'. When two possible sets Φ and Ψ of conditions exist for some (**I, J**), if each ψ ∈ Ψ is entailed (defined as above) by some ϕ ∈ **Φ, and if the contrary**
is not true, then the explanation atom I expl J bec *poss* **Φ is disregarded,**
only the explanation atom with the weaker condition set I expl J bec *poss* Ψ (the most likely to be satisfied) is kept as a result. This tends to keep **only**
optimal explanation atoms defined at the end of §**2.2 above, while remaining efficient enough (similarly to the simplification part, only a reasonably**
efficient part of the formal definition is implemented). This facilitates the human reading of the result, and in fact it is almost mandatory with some sets of data.

A third program takes the result of the second one (or directly of the first one if the second seems useless) and checks whether the set of conditions is satisfied in the answer set considered. In fact, in the formalism, we **should**
check if it is true in some answer set. This needs full brave reasoning, which