- Supponiamo di voler parlare di animali domestici e dei loro proprietari
- Assumiamo che P(L) contenga Appartiene / 2
- S = (U, I), dove U è l'insieme di animali domestici e di persone
- I(Appartiene) = {(a, b): a, b ∈ U, a appartiene a b}
- Per dire: ogni animale domestico appartiene a qualche proprietario
$$
\forall x \exist x Appartiene(x,y)
$$
- Ma cosa succede sulle coppie (a, b) dove a è una persona o dove b è un animale domestico?
- Aggiungiamo a P(L) i predicati Persona/1, Animale/1
- I(Persona) = {a ∈ U, a è una persona}
- I(Animale) = {a ∈ U, a è un animale}
- Modifichiamo la formula precedente
$$
\forall x(Animale(x)\rightarrow\exist y(Persona(y)\wedge Appartiene(x, y)))
$$
- Ricorrendo a linguaggi multisortati si può esprimere la tipizzazione in maniera più concisa, esplicita e leggibile
- Nell'esempio, consideriamo due sorte di individui Animale e Persona
$$
\forall x:Animale\ \exist y:Persona\ Appartiene(x,y)
$$
- Gli elementi del linguaggio: C(L), F(L), P(L) ora hanno un tipo che dev'essere specificato
- Appartiene / 2 diventa Appartiene: Animale x Persona