

![0_image_0.png](0_image_0.png)

for details about this implementation. Let us just notice that for now, it does not make full simplifications: it tries to avoid generating explanations **which are** not simplified, in a way which is optimal in simple cases like this example.

## 3 Introducing Predicates 3.1 Motivations

In order to keep things as simple as possible, we have considered propositional symbols only. However, we have seen various examples where this is not really appropriate. Indeed, stating Heard loud bell →IS−A Heard bell is neither natural nor convenient. Indeed, we should also state Activating loud **bell** →IS−A
Activating bell if necessary and so on. It is clear that it is much more natural to state loud bell →IS−A bell, and to infer the results about Heard [...],
Activating [...**] and so on.**
We introduce predicate symbols (such as Heard, Activating, Own**, ...) and**
constant symbols such as bell, noise, loud **bell, student, book, ...**.

The elementary terms (represented by α, β **as in preceding sections) are**
ground atoms such as Heard(bell), On(alarm), Own(student, book**). We need**
a way to use the ontological information together with the causal information.

The ontological links concern constant symbols, as in e. g. a →IS−A b.

We need a way to infer our old Heard loud bell →IS−A Heard bell **from the**
new ontological information stating here loud bell →IS−A bell**. Again, since we**
want to keep things simple, we put some restrictions. We distinguish two kinds of behavior for a given parameter in a predicate (this is the main improvement from [BCM07]).

Let us suppose that Heard(bell**) means "I have heard some bell". Then, we**