STEFANO FERILLI
Monografia su
LOGICA MATEMATICA
E
CONCETTUALIZZAZIONE
Università degli Studi di Bari
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Informatica
Corso di Ingegneria della Conoscenza e Sistemi Esperti
LOGICA PROPOSIZIONALE
Lo scopo della logica, risalente ad Aristotele, è quello di descrivere il
ragionamento.
La logica matematica ha introdotto metodi formali per descrivere la
conoscenza e per ragionare rigorosamente con essa.
La logica proposizionale è un modello matematico che ci consente di
ragionare sulla verità e sulla falsità di espressioni logiche.
Definizione.
Una proposizione (o enunciato) è un'affermazione di cui si possa dire,
oggettivamente e con certezza, che è vera o falsa.
Esempio.
Sono proposizioni:
- Roma è la capitale d'Italia.
- Bari è una città dell'Inghilterra.
Non sono proposizioni:
- I dipinti di Picasso sono belli.
- Forse oggi verrò a trovarti.
2
Sono ammessi, dunque, due soli valori di verità: Vero (V) e Falso (F).
Tesi di Frege.
Gli enunciati sono nomi.
e sono nomi di due entità, il Vero ed il Falso.
CONNETTIVI LOGICI
Le proposizioni possono essere composte fra di loro tramite connettivi
logici in modo da formare delle espressioni complesse, il cui valore di
verità può essere univocamente determinato a partire da quelli delle
proposizioni componenti.
Ogni connettivo logico è, quindi, una funzione che, ad ogni configurazione
di valori di verità delle proposizioni cui è applicata, associa un determinato
valore di verità. Tale funzione può essere schematizzata tramite una
tabella di verità, che riporta nelle prime colonne i valori di verità degli
argomenti, e nell'ultima i valori assunti dalla funzione in corrispondenza
degli argomenti sulla stessa riga.
3
Per ragionare in generale, possiamo usare, invece che proposizioni ben
determinate, delle variabili proposizionali, che corrispondono a qualunque
proposizione (o espressione ammessa) che abbia un valore di verità. Esse
acquistano, di volta in volta, il valore di verità dell'oggetto al quale sono
associate.
Si è soliti associare al Vero il valore numerico 1, e al Falso 0.
Esempio.
Supponiamo di avere la variabile proposizionale P: se poniamo
P = "Roma è la capitale d'Italia."
essa assumerà il valore di verità Vero; se invece poniamo
P = "Bari è una città dell'Inghilterra."
essa assumerà il valore di verità Falso. Inoltre, è anche possibile associare a P
espressioni composte come:
P = "Roma è la capitale d'Italia e Bari è una città dell'Inghilterra."
che, ovviamente, è falsa.
I connettivi logici più usati, con le relative tabelle di verità, sono i
seguenti:
- negazione (NOT, ¬): la negazione di una proposizione è vera se la
proposizione è falsa, e viceversa.
- congiunzione (AND, ∧): la congiunzione di due proposizioni è vera
se e soltanto se entrambe sono vere.
4
- disgiunzione (OR, ∨) la disgiunzione di due proposizioni è vera se
e soltanto se almeno una di esse è vera.
- implicazione (IF ... THEN..., ⇒): è vero che una proposizione ne
implica un'altra se (e soltanto se), ogniqualvolta è vera la prima, lo è
anche l'altra.
- equivalenza (... IF AND ONLY IF ..., ⇔): l'equivalenza di due
proposizioni è vera se e soltanto se hanno lo stesso valore di verità.
A
B
¬A
A∧B
A∨B
A⇒B
A⇔B
0
0
1
0
0
1
1
0
1
1
0
1
1
0
1
0
0
0
1
0
0
1
1
0
1
1
1
1
N.B.:
- La disgiunzione corrisponde al vel latino, e dunque è verificata anche se
entrambe le proposizioni sono vere; all'aut latino corrisponde un altro connettivo, XOR
(eXclusive OR).
- L'implicazione è leggermente diversa dal significato intuitivo e comune del
termine, ma è stata definita così perché, fra le funzioni disponibili, era la più simile al
concetto rappresentato. Per comprenderla, bisogna pensare che non corrisponde ad un
legame di causalità fra la premessa e la conseguenza, che possono anche essere
scorrelate.
5
In teoria, possiamo avere 4 operatori monadici e 16 operatori diadici.
Alcuni di essi sono banali (quelli sempre veri o sempre falsi, o che
lasciano inalterato il valore della proposizione cui sono applicati); fra i
restanti, i più comunemente usati sono quelli visti in precedenza, in quanto
più intuitivi. Interessanti, comunque, sono anche i seguenti operatori
diadici:
- NAND (Not AND), che assume valori opposti a quelli della
congiunzione, applicata alle stesse proposizioni;
- NOR (Not OR), che assume valori opposti a quelli della
disgiunzione, applicata alle stesse proposizioni;
- XOR (eXclusive OR), che è vero se e soltanto se una sola delle due
proposizioni cui è applicato è vera.
A
B
A NAND B
A NOR B
A XOR B
0
0
1
1
0
0
1
1
0
1
1
0
1
0
1
1
1
0
0
0
Definizione.
Un insieme di connettivi è detto completo se tutti gli altri connettivi sono
esprimibili tramite una combinazione di questi.
6
E' possibile dimostrare che negazione e disgiunzione costituiscono un
insieme completo.
In particolare:
A∧B
=
¬ (¬ A ∨ ¬ B)
A⇒B
=
¬A∨B
A⇔B
=
(A ⇒ B) ∧ (B ⇒ A)
In realtà sia il solo NOR che il solo NAND sono completi.
ESPRESSIONI LOGICHE
Le espressioni ammesse dal linguaggio logico si dicono formule ben
formate (fbf), e sono così definite ricorsivamente:
- Una proposizione P è una fbf;
- Se P e Q sono fbf, allora anche (¬ P), (P ∧ Q), (P ∨ Q),
(P ⇒ Q) e (P ⇔ Q) sono fbf.
Il valore di un'espressione composta si ottiene, dato un assegnamento di
verità che associa un valore di verità ad ogni variabile che compare in
essa, valutando parzialmente i singoli connettivi logici, a partire da quelli
nelle parentesi più interne e proseguendo, man mano che i loro valori
divengono noti, verso quelle più esterne.
7
Per alleggerire la notazione si introduce un ordine di priorità sui connettivi
logici, e precisamente (dalla più alta verso la più bassa):
¬
∧
∨
⇒
⇔
Esempio.
L'espressione logica
(((¬ A)∧ C) ⇔ (D ∨ (B ⇒ C)))
può essere scritta più semplicemente, senza alterarne il significato, come
¬ A∧ C ⇔ D ∨ (B ⇒ C)
Analogamente,
si interpreta come
¬A∧C∨B∧C
(((¬ A)∧ C) ∨ (B ∧ C))
Qualora si voglia intendere l'espressione in maniera differente da questa, le parentesi
sono necessarie per preservarne il significato.
Esempio.
Abbiamo detto in precedenza che è possibile esprimere qualunque connettivo logico in
termini di NOT e OR. In particolare, abbiamo visto in che modo ciò sia possibile per i
connettivi più comuni (congiunzione, implicazione ed equivalenza). Ma asserire quelle
uguaglianze significa affermare che le seguenti equivalenze valgono per qualunque
valore assunto da A e B:
(A ∧ B)
⇔
¬ (¬ A ∨ ¬ B)
(A ⇒ B)
⇔
¬A∨B
(A ⇔ B)
⇔
(A ⇒ B) ∧ (B ⇒ A)
8
Vogliamo ora dimostrarlo tramite la tecnica della valutazione parziale, costruendo via
via le relative tabelle di verità.
(A ∧ B) ⇔ ¬ (¬ A ∨ ¬ B)
A B
¬ B ¬ A ∨ ¬ B ¬ (¬ A ∨ ¬ B) A ∧ B (A ∧ B) ⇔ ¬ (¬ A ∨ ¬ B)
¬A
0
0
1
1
1
0
0
1
0
1
1
0
1
0
0
1
1
0
0
1
1
0
0
1
1
1
0
0
0
1
1
1
(A ⇒ B) ⇔ ¬ A ∨ B
A⇒B
(A ⇒ B) ⇔ ¬ (¬ A ∨ ¬ B)
A
B
¬A
¬A∨B
0
0
1
1
1
1
0
1
1
1
1
1
1
0
0
0
0
1
1
1
0
1
1
1
(A ⇔ B) ⇔ (A ⇒ B) ∧ (B ⇒ A)
(A⇒B)∧(B⇒A)
A⇔B (A⇔B) ⇔ (A⇒B)∧(B⇒A)
A
B
A⇒B
B⇒A
0
0
1
1
1
1
1
0
1
1
0
0
0
1
1
0
0
1
0
0
1
1
1
1
1
1
1
1
9
TAUTOLOGIE
Definizione.
Una tautologia è un'espressione logica sempre vera, indipendentemente
dai valori di verità assunti dalle proposizioni componenti.
Una
contraddizione
è
un'espressione
logica
sempre
falsa,
indipendentemente dai valori di verità assunti dalle proposizioni
componenti.
Esempi.
Abbiamo già visto che le equivalenze
(A ∧ B)
⇔
¬ (¬ A ∨ ¬ B)
(A ⇒ B)
⇔
¬A∨B
(A ⇔ B)
⇔
(A ⇒ B) ∧ (B ⇒ A)
sono sempre verificate per qualunque valore delle proposizioni componenti, e pertanto
sono delle tautologie.
Altre tautologie sono:
A∨¬A
A⇔A
Viceversa, sono contraddizioni:
A∧¬A
A⇔¬A
Infatti:
A
¬A
A∨¬A
A⇔A
A∧¬A
0
1
1
1
0
0
1
0
1
1
0
0
10
A⇔¬A
Le tautologie, specialmente quelle riguardanti equivalenze, sono
importanti in quanto, essendo sicuri che le due espressioni a destra e a
sinistra dell'equivalenza assumono gli stessi valori a parità dei valori delle
proposizioni componenti, potremo sempre sostituire l'una con l'altra in
qualunque espressione. Tale possibilità è nota col nome di sostituzione di
uguali per uguali.
Principio di sostituzione.
Una tautologia resta tale, qualunque sia la sostituzione che applichiamo
alle sue variabili.
In altre parole, una legge contenente variabili proposizionali resta valida
anche dopo aver sostituito un'espressione ad ogni variabile, qualunque sia
l'espressione.
Naturalmente, a tutte le occorrenze di una stessa variabile dovremo
sostituire la stessa espressione.
LEGGI ALGEBRICHE
Esistono alcune tautologie esprimenti proprietà che risultano molto utili
nella manipolazione di espressioni logiche.
11
Confronto con l'aritmetica.
E' possibile stabilire un parallelo fra gli operatori logici ∨, ∧, ¬ e gli
operatori aritmetici +, ×, – (segno) rispettivamente, in base alle seguenti
proprietà:
1.
(P ∧ Q) ⇔ (Q ∧ P)
Commutatività di ∧
2.
P ∧ (Q ∧ R) ⇔ (P ∧ Q) ∧ R
Associatività di ∧
3.
(P ∨ Q) ⇔ (Q ∨ P)
Commutatività di ∨
4.
P ∨ (Q ∨ R) ⇔ (P ∨ Q) ∨ R
Associatività di ∨
5.
P ∧ (Q ∨ R) ⇔ (P ∧ Q) ∨ (P ∧ R)
Distributività di ∧ su ∨
6.
P ∧ Vero ⇔ P
Elemento neutro di ∧
7.
P ∨ Falso ⇔ P
Elemento neutro di ∨
8.
P ∧ Falso ⇔ Falso
Elemento nullo di ∧
9.
¬¬P⇔P
Eliminazione delle doppie negazioni
Viceversa, ci sono proprietà che differenziano gli operatori logici ∨,
∧ dagli operatori aritmetici +, × rispettivamente:
10.
P ∨ (Q ∧ R) ⇔ (P ∨ Q) ∧ (P ∨ R)
Distributività di ∨ su ∧
11.
P ∨ Vero ⇔ Vero
Elemento nullo di ∨
12.
P∧P⇔P
Idempotenza di ∧
13.
P∨P⇔P
Idempotenza di ∨
14.
P ∨ (P ∧ Q) ⇔ P
P ∧ (P ∨ Q) ⇔ P
Sussunzione
12
15.
P ∧ (¬ P ∨ Q) ⇔ P ∧ Q
P ∨ (¬ P ∧ Q) ⇔ P ∨ Q
Eliminazione di alcune negazioni
Leggi di DeMorgan.
1.
¬ (P ∧ Q) ⇔ ¬ P ∨ ¬ Q
2.
¬ (P ∨ Q) ⇔ ¬ P ∧ ¬ Q
3.
¬ (P1 ∧ P2 ∧ ... ∧ Pk) ⇔ ¬ P1 ∨ ¬ P2 ∨ ... ∨ ¬ Pk
4.
¬ (P1 ∨ P2 ∨ ... ∨ Pk) ⇔ ¬ P1 ∧ ¬ P2 ∧ ... ∧ ¬ Pk
Principio di dualità.
Una tautologia in cui compaiano solo i connettivi di congiunzione e
disgiunzione resta tale scambiando fra loro tali connettivi.
Leggi dell'equivalenza.
1.
P⇔P
Riflessività
2.
(P ⇔ Q) ⇔ (Q ⇔ P)
Commutatività
3.
((P ⇔ Q) ∧ (Q ⇔ R)) ⇒ (P ⇔ R)
Transitività
4.
(P ⇔ Q) ⇔ (¬ P ⇔ ¬ Q)
Equivalenza dei negati
Leggi dell'implicazione.
1.
((P ⇒ Q) ∧ (Q ⇒ P)) ⇔ (P ⇔ Q)
2.
(P ⇔ Q) ⇒ (P ⇒ Q)
3.
((P ⇒ Q) ∧ (Q ⇒ R)) ⇒ (P ⇒ R)
4.
(P ⇒ Q) ⇔ (¬ P ∨ Q)
Transitività
(P1 ∧ P2 ∧ ... ∧ Pn ⇒ Q) ⇔ (¬ P1 ∨ ¬ P2 ∨ ... ∨ ¬ Pn ∨ Q)
13
Osservazioni.
- Le proprietà associativa e commutativa di ∧ e ∨ ci consentono di
esprimere qualunque gruppo di congiunzioni (rispettivamente, di
disgiunzioni),
comunque
nidificate,
come
semplice
sequenza
di
congiunzioni (rispettivamente, di disgiunzioni) priva di parentesi
intermedie e valutabile in un ordine qualsiasi.
- Il parallelo con l'aritmetica fa sì che la congiunzione venga anche
detta prodotto logico, e la disgiunzione somma logica.
- Le proprietà che, nel parallelo, differivano da quelle dell'aritmetica
sono, in pratica, quelle mancanti all'operatore ∨ rispetto a ∧, per cui sono
necessarie alla validità del principio di dualità.
- Nella sussunzione, sostituendo le variabili enunciative della prima
proprietà con dei prodotti di letterali, se ne deduce che in una somma di
prodotti possiamo eliminare ogni prodotto i cui letterali includono quelli
di un altro prodotto. Simmetricamente, sostituendo le variabili della
seconda proprietà con delle somme di letterali, si conclude che in un
prodotto di somme è possibile eliminare una somma che include i letterali
di un'altra. Questo perché i letterali superflui non potrebbero comunque
variare il valore di verità assunto dall'espressione.
14
METODI DI DIMOSTRAZIONE
La logica degli enunciati consente di verificare formalmente e
rigorosamente che i metodi di dimostrazione (usati, ad esempio, in
matematica) siano corretti, per cui applicando quei determinati meccanismi
di ragionamento alle ipotesi date siamo sicuri di trarre delle conclusioni
vere.
Il meccanismo che consente di "ragionare" con formule logiche è detto
calcolo.
Definizione.
Siano dati un insieme di espressioni vere, dette ipotesi, ed un insieme di
tautologie basate sull'implicazione (o sull'equivalenza), dette regole di
inferenza. Una dimostrazione è una sequenza di formule, ognuno dei cui
elementi è una tautologia, un'ipotesi o una formula derivata da due
elementi precedenti della sequenza tramite una delle regole di inferenza.
Una formula è dimostrata a partire da un insieme di ipotesi (tramite le
regole di inferenza a disposizione) se è possibile costruire, a partire da
esse, una dimostrazione che contiene quella formula.
Tale procedimento si rende necessario a causa dell'impossibilità, anche per
formule contenenti poche proposizioni, di costruire la relativa tavola di
15
verità, a causa dell'alto numero di combinazioni di valori da tenere
presente.
Alcuni importanti metodi di dimostrazione, con le relative tautologie su
cui si basano, sono i seguenti.
Analisi per casi.
Se è possibile dedurre una conclusione tanto da una proposizione quanto
dalla sua negazione, allora la conclusione è sempre vera:
(P ⇒ Q) ∧ (¬ P ⇒ Q) ⇔ Q
E' una generalizzazione della
Legge del terzo escluso:
P ∨ ¬ P ⇔ Vero
(per cui una proposizione è vera o falsa, senza altra possibilità), tenendo
presente che non possono essere vere contemporaneamente una
proposizione ed il suo contrario:
P ∧ ¬ P ⇔ Falso
Dimostrazione della contrapposizione.
Sapendo che una proposizione è vera solo se è vera un'altra, deduciamo
che se non è vera non lo è neppure l'altra. Viene espressa formalmente
dalla seguente tautologia:
(P ⇒ Q) ⇔ (¬ Q ⇒ ¬ P)
16
Dimostrazione per assurdo.
E' basata sulla seguente tautologia:
(¬ P ⇒ Falso) ⇔ P
per cui, se da una proposizione possiamo dedurre il falso (cioè una
contraddizione), deve necessariamente essere vero il suo contrario.
Riduzione a Vero.
Si fonda sul fatto che un'espressione è una tautologia, che dunque si può
trasformare in Vero tramite sostituzione di uguali per uguali.
Formalmente:
(P ⇔ Vero) ⇔ P
LIMITI DELLA LOGICA PROPOSIZIONALE
Nonostante il Calcolo delle Proposizioni sia un utile strumento per
ragionare sulla verità o falsità di affermazioni e deduzioni, il suo limite
risiede nel fatto che considera monoliticamente ogni enunciato in base al
suo valore di verità.
In altre parole, non potendo guardare "dentro" alle proposizioni, non è in
grado di cogliere relazioni fra enunciati diversi, che potrebbero aiutare nel
ragionamento su di essi.
17
Esempio.
Date le proposizioni:
Roma è in Italia
Milano è in Italia
Torino è in Italia
Napoli è in Italia
sappiamo che sono tutte vere, ma non siamo in grado di cogliere il nesso che lega le
quattro città, ossia il fatto di trovarsi nella stessa nazione, l'Italia.
Questo limite della logica proposizionale viene superato dalla Logica dei
Predicati, una sua estensione così detta per il fatto che "predica", ossia dice
qualcosa di uno o più oggetti.
Nell'esempio precedente, possiamo isolare gli oggetti di cui si parla, ed ottenere così le
frasi generali:
... è in Italia.
oppure:
Roma è in ....
o anche:
... è in ....
da cui, sostituendo gli spazi rimasti vuoti con degli oggetti, otterremo di volta in volta
vari enunciati il cui valore di verità dipende dalla sostituzione eseguita.
18
LOGICA DEI PREDICATI
Definizione.
Un predicato è una proposizione dalla quale siano stati eliminati uno o più
oggetti.
Ciascuno di essi verrà sostituito da una variabile, alla quale potrà essere, di
volta in volta, assegnato un valore fra quelli di un insieme ad essa
associato, detto il suo dominio.
Simmetricamente, associare specifici oggetti a tutte le variabili che compaiono in un
predicato lo trasformano in una proposizione.
Invece che assegnare direttamente ad una variabile un valore del suo
dominio, è possibile farlo dipendere da quello di altri oggetti, anche
appartenenti a domini differenti, tramite l'uso di funzioni, che a partire da
un certo insieme di valori appartenenti a determinati domini individuano
univocamente un certo valore di un dominio prefissato.
Il numero di variabili che compaiono in un predicato o in una funzione si
dice la sua arietà. Un predicato (o funzione) di arietà n si dice n-ario.
Un termine è una variabile, una costante o una funzione con i suoi
argomenti (che, a loro volta, sono anch’essi dei termini).
19
Esempio.
... è in ... = x è in y
è un predicato binario (le cui variabili hanno per domini, rispettivamente, l'insieme delle
città e quello delle nazioni), che possiamo rappresentare come P(x,y).
Esso, ad esempio, sarà vero per
x = Roma, y = Italia: Roma è in Italia
e falso per
x = Bari, y = Inghilterra:
Bari è in Inghilterra.
Sarebbe stato possibile usare una funzione unaria del tipo:
Il capoluogo di ... = Il capoluogo di z = f(z)
che, a partire da un oggetto appartenente all'insieme delle regioni in cui le varie nazioni
sono suddivise, restituisce il nome del suo capoluogo. In tal caso, il predicato sarebbe
stato:
La capitale di z è in y = P(f(z), y).
ESPRESSIONI
Una proposizione può, dunque, essere vista come un predicato con zero
argomenti.
Definizione.
Un atomo è un predicato con zero o più argomenti.
20
Nella logica dei predicati, questo concetto corrisponde a quello che era la
"variabile proposizionale" nella logica degli enunciati.
A partire dai predicati, è possibile costruire espressioni complesse tramite
le stesse procedure e gli stessi connettivi logici usati nella logica
proposizionale.
Un letterale è un atomo o la sua negazione.
Un atomo, un letterale o, in generale, un'espressione si dice di base (o
ground)se è priva di variabili (ossia tutti i suoi argomenti sono costanti).
Esempio.
padre_di(X, Stefano) è un atomo (e quindi anche un letterale ed un'espressione).
¬ nero(Y)
è un letterale (e quindi anche un'espressione).
bianco(X) ∨ colorato(X)
è un'espressione.
padre_di(Carlo, Stefano)
è un atomo ground.
¬ nero(neve)
è un letterale ground.
bianco(vestito) ∨ colorato(vestito)
è un'espressione ground.
21
QUANTIFICATORI
Dato un predicato, per potergli associare un valore di verità, dobbiamo
trasformarlo in una proposizione, assegnando ad ognuna delle variabili che
in esso compaiono un valore appartenente al relativo dominio.
Spesso, nei ragionamenti reali, non si parla di uno specifico oggetto, ma si
fanno affermazioni generali contenenti le locuzioni "Per ogni oggetto ..." e
"Esiste un oggetto ...".
Per comodità sono stati introdotti due simboli corrispondenti a tali
locuzioni, detti quantificatori:
• il quantificatore esistenziale (∃), equivalente a "Esiste un", ed
• il quantificatore universale (∀), equivalente a "Per ogni".
Una variabile quantificata si dice vincolata, ed è come se le fosse stato
assegnato uno specifico valore (in caso contrario è detta libera). Allora,
per poter assegnare un valore di verità ad un predicato bisogna che a
ciascuna delle sue variabili sia assegnato un valore ben preciso del relativo
dominio oppure che le sia associato un quantificatore.
Un'espressione priva di variabili libere è detta chiusa.
Esempio.
Supponiamo di voler asserire che il cubo di qualunque numero positivo è positivo.
Definiamo la funzione
cubo(x), che ad ogni numero reale associa il suo cubo,
22
ed il predicato
P(y,z) = Se y è maggiore di zero, allora anche z è maggiore di zero.
dove y e z hanno per dominio i numeri reali.
Allora l'affermazione iniziale può essere scritta come
∀x P(x,cubo(x)).
che è sicuramente vera.
Si pensi alla necessità, qualora non esistessero i quantificatori, di ripetere questa stessa
affermazione per ciascun numero reale.
Tecnicamente, il quantificatore universale corrisponde alla congiunzione
di tutti i predicati ottenibili sostituendo alla variabile quantificata ogni
possibile valore del suo dominio; il quantificatore esistenziale corrisponde
alla disgiunzione di tutti i predicati ottenibili sostituendo alla variabile
quantificata ogni possibile valore del suo dominio.
Esempio.
Consideriamo il predicato P(x), dove il dominio di x è {a1, ..., an}. Allora:
(∀x) P(x) ⇔ P(a1) ∧ ... ∧ P(an)
(∃x) P(x) ⇔ P(a1) ∨ ... ∨ P(an)
Ciò significa, in pratica, che anch'essi sono degli operatori, per cui se E è
un'espressione valida della logica dei predicati, anche (∀x) E e (∃x) E lo
sono.
23
Si assume che la loro precedenza sia massima fra tutti gli altri.
Ciascuno dei due quantificatori è esprimibile tramite l'altro.
E' infatti facile verificare, anche intuitivamente, che
(∀x) P(x) ⇔ ¬ (∃x) (¬ P(x))
ossia se una proprietà è verificata da qualunque valore del dominio ciò
significa che non esiste un valore del dominio che non la verifica, e che
(∃x) (P(x)) ⇔ ¬ (∀x) (¬ P(x))
ossia se esiste un valore del dominio che verifica una proprietà ciò
significa che non tutti i valori del dominio non la verificano.
La dimostrazione rigorosa
si ottiene sfruttando le leggi di DeMorgan, e tenendo
presente che esse valgono anche per congiunzioni o disgiunzioni infinite.
La vista di un quantificatore, ossia la porzione di espressione sulle cui
variabili esso agisce, è quella che lo segue immediatamente.
Esempio.
Nell'espressione
∀x (P(x) ∧ Q(a) ∨ (∃y (P(y) ∧ R(x))))
la vista di "∀" è (P(x) ∧ Q(a) ∨ (∃y (P(y) ∧ R(x)))), quella di "∃" è (P(y) ∧ R(x)).
24
Se in tale sottoespressione è presente un altro quantificatore applicato alla
stessa variabile, esso ha precedenza su quello esterno. In altre parole, una
variabile che sia nella vista di più quantificatori si intende legata a quello
più interno.
Esempio.
Nell'espressione
∀x (P(x) ∧ Q(a) ∨ (∃x (P(b) ∧ R(x))))
la variabile in R(x) si intende associata ad "∃", ed è diversa da quella in P(x), che invece
è quantificata dal "∀".
Tale situazione può essere evitata assegnando a ciascun quantificatore una
variabile diversa da tutte le altre, operazione che va sotto il nome di
rettifica.
Esempio.
L'espressione dell'esempio precedente, rettificata, diventa
∀x (P(x) ∧ Q(a) ∨ (∃z (P(b) ∧ R(z)))).
Consideriamo la seguente fbf:
∀y [∃x P(x,y)]
“Per ogni y esiste un x, possibilmente dipendente da y, tale che P(x,y)”. Il
fatto che la variabile x possa dipendere da y può essere espresso
25
esplicitamente da una funzione che pone in corrispondenza la seconda con
la prima, il che consente di eliminare il quantificatore esistenziale. In altre
parole, tale funzione, detta di Skolem, resitituisce, data una y, quella x
(che, pur non essendo nota, il quantificatore esistenziale ci assicura
esistere per ogni y) per cui valeva la formula data. Nel caso proposto, se
chiamiamo g() la funzione di Skolem, si ottiene:
∀y P(g(y),y)
In generale, per eliminare un quantificatore esistenziale da una fbf si
rimpiazza ogni occorrenza della sua variabile quantificata con una
funzione di Skolem i cui argomenti sono tutte le variabili vincolate da
quantificatori universali i cui raggi d’azione includono il raggio d’azione
del quantificatore esistenziale che si vuole eliminare. I simboli di funzione
usati per le funzioni di Skolem devono ovviamente essere nuovi, ossia non
già presenti nella fbf.
Esempio.
[∀w Q(w)] ⇒ ∀x {∀y {∃z [P(x,y,z) ⇒ ∀u R(x,y,u,z)]}}
diventa, introducendo la funzione di Skolem g() per z,
[∀w Q(w)] ⇒ ∀x ∀y [P(x,y,g(x,y)) ⇒ ∀u R(x,y,u,g(x,y))]
26
Se il quantificatore esistenziale che si desidera eliminare non cade
all’interno del raggio d’azione di nessun quantificatore universale, si deve
usare una funzione di Skolem senza argomenti, ovvero una costante.
Esempio.
∃x P(x)
diventa
P(a)
dove a è un nuovo simbolo di costante.
LOGICA IN FORMA DI CLAUSOLE
Definizione.
Una clausola è una disgiunzione di letterali, le cui variabili si suppongono
quantificate universalmente.
Essa si può rappresentare come espressione logica:
A1 ∨ A2 ∨ ... ∨ An ∨ ¬ B1 ∨ ¬ B2 ∨ ... ∨ ¬ Bm
oppure come insieme di letterali (sottintendendo che sono posti in disgiunzione fra
loro):
{A1, A2, ..., An, ¬ B1, ¬ B2, ..., ¬ Bm}
oppure sotto forma di regola di inferenza:
A1, A2, ..., An :- B1, B2, ..., Bm
che si interpreta "Se sono verificati tutti i Bj, allora è verificato almeno uno degli Ai":
B1 ∧ B2 ∧ ... ∧ Bm ⇒ A1 ∨ A2 ∨ ... ∨ An
27
I Bj si dicono corpo (o premesse) e gli Ai testa (o conseguenze).
Una clausola si dice di Horn se ha un solo letterale nella testa.
Esiste un procedimento tramite il quale qualunque fbf della logica dei
predicati può essere trasformata in un insieme di clausole considerate in
congiunzione fra loro (abbiamo infatti visto che i due operatori NOT e OR,
che sono gli unici ad apparire nelle clausole, sono completi), per cui i due
linguaggi sono totalmente equivalenti.
Esempio.
∀x {P(x) ⇒ {∀y [P(y) ⇒ P(f(x,y))] ∧ ¬∀y [Q(x,y) ⇒ P(y)]}}
1. Eliminare il simbolo di implicazione, sostituendo p⇒
⇒q con ¬p∨
∨q in
tutte le occorrenze di ⇒ all’interno della fbf (assumendo che
eventuali equivalenze siano già state trasformate in doppie
implicazioni):
∀x {¬P(x) ∨ {∀y [¬P(y) ∨ P(f(x,y))] ∧ ¬∀y [¬Q(x,y) ∨ P(y)]}}
2. Ridurre il raggio di azione del ¬, in modo tale che il simbolo di
negazione si applichi al più ad una formula atomica, facendo uso
delle leggi di eliminazione delle doppie negazioni, di DeMorgan e
di trasformazione dei quantificatori:
∀x {¬P(x) ∨ {∀y [¬P(y) ∨ P(f(x,y))] ∧ ∃y [Q(x,y) ∧ ¬P(y)]}}
28
3. Rettificare le variabili, rimpiazzando uniformemente ciascuna
variabile quantificata con un’altra nuova (che non occorra
nell’espressione) lungo tutto il raggio d’azione del quantificatore, il
che non modifica il valore di verità dell’espressione stessa, in modo
tale che ogni quantificatore abbia la propria variabile fittizia:
∀x {¬P(x) ∨ {∀y [¬P(y) ∨ P(f(x,y))] ∧ ∃w [Q(x,w) ∧ ¬P(w)]}}
4. Eliminare i quantificatori esistenziali, creando per ciascuno
un’apposita funzione di Skolem e sostituendo tutte le occorrenze di
variabili quantificate esistenzialmente con la relativa funzione:
∀x {¬P(x) ∨ {∀y [¬P(y) ∨ P(f(x,y))] ∧ [Q(x,g(x)) ∧ ¬P(g(x))]}}
dove g(x) è una funzione di Skolem
5. Convertire la formula in forma prenessa, spostando tutti i
quantificatori in testa alla formula, mantenendo il loro ordine
relativo. Ciò è possibile perché, avendo rettificato le variabili, non
vi è conflitto fra i loro nomi. La fbf risultante si dice in forma
prenessa, e consiste di una serie di quantificatori, detta prefisso,
seguita da una formula priva di quantificatori, detta matrice.
∀x ∀y {¬P(x) ∨ {[¬P(y) ∨ P(f(x,y))] ∧ [Q(x,g(x)) ∧ ¬P(g(x))]}}
6. Mettere la matrice in forma normale congiuntiva, ossia riscriverla
come congiunzione di un insieme finito di disgiunzioni di letterali.
Ciò è sempre possibile, facendo uso della proprietà distributiva:
∀x ∀y {[¬P(x) ∨ ¬P(y) ∨ P(f(x,y))] ∧ [¬P(x) ∨ Q(x,g(x))] ∧ [¬P(x) ∨ ¬P(g(x))]}
29
7. Eliminare i quantificatori universali. Ciò è possibile in quanto tutte
le variabili argomentali che usiamo nelle fbf devono essere
vincolate, ed i quantificatori esistenziali sono stati eliminati, per cui
tutte le variabili rimanenti a questo punto sono quantificate
universalmente; inoltre, l’ordine delle quantificazioni non è
importante (per la proprietà commutativa) e la formula è rettificata.
[¬P(x) ∨ ¬P(y) ∨ P(f(x,y))] ∧ [¬P(x) ∨ Q(x,g(x))] ∧ [¬P(x) ∨ ¬P(g(x))]
8. Eliminare i simboli ∧ espliciti, rimpiazzando le espressioni della
forma p∧q con l’insieme di clausole {p,q}.
{[¬P(x) ∨ ¬P(y) ∨ P(f(x,y))], [¬P(x) ∨ Q(x,g(x))], [¬P(x) ∨ ¬P(g(x))]}
9. Ridenominare le variabili in modo tale che nessun simbolo di
variabile appaia in più di una clausola. Ciò è possibile dal momento
che ∀x [P(x) ∧ Q(x)] è equivalente a ∀x P(x) ∧ ∀y Q(y).
{[¬P(x1) ∨ ¬P(y) ∨ P(f(x1,y))], [¬P(x2) ∨ Q(x2,g(x2))], [¬P(x3) ∨ ¬P(g(x3))]}
INTERPRETAZIONI
Si è detto che per poter associare ad un predicato un valore di verità
bisogna aver prima vincolato tutte le sue variabili (tramite quantificatori o
costanti del relativo dominio), in quanto a seconda di tali assegnamenti
essi possono essere veri o falsi (in pratica, bisogna sapere di chi si sta
parlando).
30
Definizione.
Una interpretazione di un predicato P con n argomenti è una funzione che
per ogni possibile combinazione di valori assunta dagli argomenti
(ciascuno nel proprio dominio) assegna al predicato il valore Vero oppure
Falso.
Essa è l'equivalente dell'assegnazione di verità nel calcolo degli enunciati, solo che qui,
come detto, dipende dagli oggetti cui l'affermazione si riferisce.
Esempio.
Consideriamo il generico predicato P(x,y), dove i domini di x ed y sono,
rispettivamente, {0, 1, 2} e {a, b}. Allora una possibile interpretazione sarebbe:
x
y
P(x,y)
0
a
Vero
0
b
Vero
1
a
Vero
1
b
Falso
2
a
Vero
2
b
Falso
In realtà, per definire un'interpretazione basta elencare le combinazioni di valori per cui
il predicato è vero, sottintendendo automaticamente che tutte le altre combinazioni lo
rendono falso. Nell'esempio precedente, avremmo:
31
{(0,a), (0,b), (1,a), (2,a)}.
Le espressioni si interpretano con una valutazione identica a quella della
logica proposizionale, una volta che siano definite le interpretazioni dei
singoli predicati che in esse compaiono (e dunque i valori di verità che essi
assumono).
Tramite le interpretazioni possiamo ragionare anche sulla coerenza di
intere teorie (ossia insiemi di espressioni).
Un insieme di espressioni si dice soddisfacibile se esiste almeno
un'interpretazione che le rende tutte vere contemporaneamente, altrimenti
si dice insoddisfacibile.
Un'interpretazione che rende vero un insieme di formule si dice modello
per quell'insieme.
Un insieme di formule è valido se qualunque interpretazione è un modello
per essa, ossia rende vere tutte le espressioni in essa presenti.
32
TAUTOLOGIE
Definizione.
Un'espressione della logica dei predicati è una tautologia se risulta vera
per ogni sua possibile interpretazione.
per cui è una definizione totalmente simmetrica a quella della logica proposizionale.
A tal fine, le eventuali variabili libere vanno interpretate come se fossero
quantificate universalmente.
Tutte le tautologie della logica proposizionale rimangono valide anche sui
predicati, proprio perché, una volta interpretati, anch'essi diventano
proposizioni.
Infatti, il Principio di sostituzione resta valido in quanto, per ogni
interpretazione, il predicato assume un valore di verità indipendente dalla
posizione in cui esso si trova all'interno dell'espressione, che pertanto
resterà uguale in tutte le sue occorrenze.
In particolare, è ancora possibile usare il Principio di sostituzione di
uguali per uguali, sostituendo a qualunque sottoespressione un'espressione
che sappiamo, tramite una tautologia, essere ad essa equivalente.
33
Poiché i quantificatori sono, in pratica, nuovi operatori introdotti nella
logica dei predicati rispetto a quella proposizionale, esistono delle
tautologie che li riguardano non riscontrabili in quest'ultima.
Siano E ed F due espressioni:
1.
(∀x) E ⇔ (∀y) E'
(∃x) E ⇔ (∃y) E'
dove E' è ottenuta da E sostituendo y a tutte le occorrenze di x legate dal
quantificatore rappresentato.
2.
¬ ((∀x) E) ⇔ (∃x) (¬ E)
¬ ((∃x) E) ⇔ (∀x) (¬ E)
3.
(E ∧ (∀x) F) ⇔ (∀x) (E ∧ F)
(E ∧ (∃x) F) ⇔ (∃x) (E ∧ F)
4.
(E ∨ (∀x) F) ⇔ (∀x) (E ∨ F)
(E ∨ (∃x) F) ⇔ (∃x) (E ∨ F)
5.
(∀x) (∀y) E ⇔ (∀y) (∀x) E
(∃x) (∃y) E ⇔ (∃y) (∃x) F
Questo insieme di proprietà consente di esprimere qualunque formula in modo tale che
tutti i quantificatori si trovino all'inizio, e che il loro effetto sia indipendente dall'ordine
in cui appaiono.
Ciò è fondamentale per poter trasformare le espressioni in forma di clausole.
Dalla 2, in particolare, negando ambo i membri dell'equivalenza si ottengono le formule
viste in precedenza, che consentivano di esprimere ogni quantificatore tramite l'altro.
34
Tutte queste tautologie si dimostrano con le leggi di DeMorgan.
DIMOSTRAZIONI
Come nella logica proposizionale, dato un insieme di espressioni supposte
vere (dette assiomi) e un insieme di regole di inferenza, una dimostrazione
è una sequenza di espressioni ognuna delle quali sia un assioma, una
tautologia o sia derivabile dalle espressioni che la precedono nella
sequenza tramite una regola di inferenza.
In più, nella logica dei predicati esiste la
Legge di sostituzione di variabile.
Si può inserire nella sequenza di dimostrazione un'espressione ottenuta
sostituendo in un'espressione precedente della sequenza tutte le occorrenze
di una variabile libera con un'altra variabile o una costante.
Più formalmente, data una funzione sost che associa ad ogni variabile
libera di un'espressione E una costante del suo dominio oppure una
variabile (che può anche essere la variabile stessa), vale la seguente regola
di inferenza:
E ⇒ sost(E).
35
Esempio.
Se l'espressione
P(x,y) ∨ (∃z) Q(x,z)
appartiene alla sequenza di dimostrazione, allora anche l'espressione
P(a,b) ∨ (∃z) Q(a,z)
può essere inserita nella sequenza.
Ricordiamo che, supponendo di trattare espressioni chiuse, la formula iniziale si intende
preceduta dai quantificatori (∀x) (∀y).
Un particolare tipo di dimostrazione è quello le cui ipotesi sono di una
delle seguenti due forme:
• fatti, cioè atomi ground;
• regole, cioè espressioni di tipo implicazione (Se ... allora ...).
In sostanza, i fatti rappresentano delle affermazioni riguardanti gli oggetti
del mondo, che sappiamo essere vere; le regole rappresentano principi
generali che possono essere applicati ai fatti noti per dedurne altri fatti
veri.
Se tutte le premesse di una regola sono vere (per ipotesi o per essere state a
loro volta dimostrate) è possibile dedurre la sua conseguenza, e aggiungere
quel fatto alla sequenza di dimostrazione.
36
RISOLUZIONE
Una regola di inferenza molto nota è la risoluzione, che opera solo su
formule in forma di clausole e la cui forma generale è la seguente:
(P1∨P2∨...∨Pn) ∧ (¬ P1∨Q2∨...∨Qm) ⇒ (P2∨...∨Pn∨Q2∨...∨Qm)
dove i Pi e Qj sono tutti letterali distinti e le clausole sono supposte
ground.
Le premesse sono dette genitori, la conseguenza risolvente, P1 e ¬ P1
letterali risolti.
Quando si usa la risoluzione, l’insieme di fbf dalle quali si vuole provare
una data fbf deve essere convertito in clausole. Si può dimostrare che se
una fbf segue logicamente da un insieme di fbf, allora essa segue
logicamente anche dall’insieme di clausole ottenute convertendo le fbf
dell’insieme in forma di clausole.
La risoluzione racchiude in sé diverse altre regole di inferenza, come ad
esempio il modus ponens.
Esempio.
Supponiamo di avere le ipotesi {P, ¬ P ∨ Q, ¬ Q ∨ R}.
37
Da esse si può dimostrare R:
1.
P
perché è un'ipotesi
2.
¬P∨Q
perché è un'ipotesi
3.
¬Q∨R
perché è un'ipotesi
4.
Q
per risoluzione di 1 e 2
5.
¬P∨R
per risoluzione di 2 e 3
6.
R
per risoluzione di 1 e 5 o di 3 e 4
Definizione.
Una clausola senza né testa né corpo si dice clausola vuota, si indica con
e rappresenta una contraddizione (in quanto, non contenendo alcun
letterale, non può essere mai verificata).
Si può dimostrare che se da un insieme di ipotesi è possibile ottenere la
clausola vuota tramite risoluzione, allora tale insieme di ipotesi è
incoerente.
Questo è utile quando conosciamo già in anticipo l'affermazione che vogliamo
dimostrare, per cui, invece che partire dalle ipotesi e andare avanti a tentativi nella
speranza di dimostrarla, possiamo procedere in maniera più mirata, sfruttando il
seguente procedimento.
38
Dimostrazione per refutazione.
• Si assume che la negazione della tesi è vera;
• Si mostra che tale negazione, insieme alle ipotesi, porta ad affermare
come vera qualcosa che non può esserlo (dimostrando la clausola
vuota, che indica una contraddizione);
• Si conclude che il teorema è vero.
La risoluzione, agendo solo su clausole ground, è stata in sostanza definita per il calcolo
degli enunciati. Nel calcolo dei predicati la presenza di variabili non ci consente di
capire immediatamente se due atomi sono complementari, per cui bisogna estendere la
nozione fin qui appresa a trattare anche questo caso.
Per estendere il principio di risoluzione alla logica dei predicati possiamo
sfruttare la Legge di sostituzione di variabile:
supponendo che le due formule cui applicare la risoluzione siano rettificate
(non abbiano, cioè, variabili in comune), si cerca una sostituzione che
renda complementari un letterale della prima espressione con uno della
seconda (che prende il nome di unificatore dei due letterali), la si applica
ad entrambe le espressioni e si risolvono in maniera analoga alla
precedente le due formule così ottenute.
Le sostituzioni possono essere composte, ossia applicate in sequenza ad un'espressione.
39
Un unificatore si dirà più generale di un altro se il risultato dell'applicazione di
quest'ultimo si può ottenere dall'applicazione del primo seguita dall'applicazione di
un'altra sostituzione.
Allora, per i nostri scopi siamo interessati, fra tutti i possibili unificatori, solo a quello
più generale.
Esempio.
Supponiamo che le ipotesi a disposizione siano costituite dalle seguenti regole:
1.
computer(x) :- parte(x,y), tastiera(y), parte(x,z), stampante(z).
2.
stampante(w) :- ha_testina(w).
e dai seguenti fatti:
3.
parte(a,b).
4.
parte(a,c).
5.
ha_testina(c).
6.
tastiera(b).
Vogliamo dimostrare che l'oggetto a in questione è un computer. Tramite il
meccanismo di dimostrazione per refutazione, aggiungiamo alle ipotesi la negazione
della tesi:
8.
¬ computer(a).
o, in forma di clausola,
:- computer(a).
e cerchiamo di dimostrare l'inconsistenza, ossia la clausola vuota:
9.
:- parte(a,y), tastiera(y), parte(a,z), stampante(z).
ottenuta sostituendo nell'ipotesi 1 x con a e risolvendo con l'ipotesi 8;
10.
:- tastiera(b), parte(a,z), stampante(z).
ottenuta sostituendo nella formula 9 y con b e risolvendo con l'ipotesi 3;
11.
:- parte(a,z), stampante(z).
40
ottenuta risolvendo la formula 10 con l'ipotesi 6;
12.
:- stampante(c).
ottenuta sostituendo z con c nella formula 11 e risolvendo con l'ipotesi 4;
13.
:- ha_testina(c).
ottenuta sostituendo w con c nell'ipotesi 2 e risolvendo con la formula 12;
14.
ottenuta risolvendo la formula 13 con l'ipotesi 5.
41
CONCETTUALIZZAZIONE
Definizione.
Il processo che porta ad esprimere la conoscenza tramite la logica è
chiamato concettualizzazione.
Esistono tre tipi di concetti che possono essere espressi:
• oggetti, ossia qualunque cosa di cui si voglia parlare;
• funzioni, che consentono di associare oggetti ad oggetti;
• relazioni, che collegano oggetti fra loro.
Essi possono essere sia reali che astratti (o addirittura immaginari).
Generalmente non si descrive tutto il mondo, ma ci si limita a
quell'insieme necessario e sufficiente agli scopi che ci si prefiggono.
Dagli scopi dipende anche il livello di dettaglio a cui portare la
descrizione, che se è troppo specifico può rendere macchinoso il
ragionamento, se è troppo generale può renderlo addirittura impossibile.
Si deduce che non esiste un'unica concettualizzazione di una stessa cosa, e
che a seconda di quella scelta possono variare sia la trattabilità che la
chiarezza del ragionamento.
42
Esempio.
Si consideri come oggetto da formalizzare la seguente configurazione di blocchi:
a
b
d
c
e
Concettualizzandola, otteniamo un insieme di oggetti, corrispondenti ai blocchi:
{a, b, c, d, e}
e possiamo definirvi la funzione posato_su, che associa ad ogni blocco quello posato su
di esso (se esiste):
posato_su = {(b,a), (c,b), (e,d)}
e le relazioni sopra (che indica tutti gli oggetti che sono al di sopra di altri) e libero (che
indica gli oggetti che non ne hanno altri al di sopra):
43
sopra = {(a,b), (a,c), (b,c), (d,e)}
libero = {a, d}
Va notato che si sarebbero potute definire molte altre funzioni e/o relazioni sui blocchi,
e che avremmo potuto considerare fra gli oggetti anche la base su cui i blocchi sono
posati, ma sono state tralasciate in quanto ininfluenti ai nostri scopi. Analogamente, si
sarebbero potuti descrivere gli stessi oggetti in termini di gruppi di blocchi o di
molecole che li compongono, ma si è ritenuto che questo livello di dettaglio sia il più
adatto.
Alcune concettualizzazioni non consentono di ragionare riguardo alle
proprietà delle proprietà.
La soluzione risiede nella reificazione, ossia nel considerare le proprietà
come oggetti, in modo da poter definire su di essi funzioni e relazioni.
Esempio.
Sia data la concettualizzazione costituita da un insieme di blocchi {a, b, c, d, e}, priva
di funzioni e comprendente le relazioni {rosso, bianco, blu} che legano ogni blocco al
relativo colore.
Essa ci consente di considerare i colori dei vari blocchi, ma non le eventuali proprietà di
tali colori.
44
La soluzione consiste nel reificare i colori, trasformandoli in oggetti, associandoli ai
relativi blocchi tramite una funzione colore e definendo su di essi le relazioni volute,
come ad esempio caldo.
Esempio.
Consideriamo alcune figure date ai bambini come esempi per insegnargli i concetti di
fisica, e le relative descrizioni logiche in base al linguaggio definito (intuitivo).
Forza interna: Il primo concetto che si vuole descrivere è la forza interna, intesa dai
bambini come la capacità di opporre resistenza.
Ha forza interna un uomo molto
grande e pesante (u1) che viene
u1
spinto da un uomo grande e pesante
u2
(u2) che resta fermo.
ha_forza _interna(u1) :- uomo(u1), molto_grande(u1), molto_pesante(u1), uomo(u2),
grande(u2), pesante(u2), spinge(u2, u1), fermo(u2).
Non ha forza interna un uomo piccolo
e leggero (u3) che viene spinto da un
u1
uomo molto grande e pesante (u1) e
u3
si muove.
45
¬ ha_forza _interna(u3) :- uomo(u3), piccolo(u3), leggero(u3), uomo(u1),
molto_grande(u1), molto_pesante(u1), spinge(u1, u3),
in_movimento(u3).
Ha forza interna una pietra molto
grande e pesante (p1) che non si muove
u2
se viene spinta da un uomo grande e
p1
pesante (u2).
ha_forza _interna(p1) :- pietra(p1), molto_grande(p1), molto_pesante(p1), uomo(u2),
grande(u2), pesante(u2), spinge(u2, p1), fermo(p1).
Forza acquisita: Il primo significato che i bambini associano a tale concetto è quello di
capacità di causare danno.
Ha forza acquisita un uomo pesante
e molto grande (u6) che urta un
u6
v1
vetro (v1) che si rompe.
ha_forza _acquisita(u6) :- uomo(u6), molto_grande(u6), pesante(u6), vetro(v1),
urta(u6, v1), si_rompe(v1).
46
Ha forza acquisita un uomo pesante e
molto grande (u6) che urta una
u6
s1
scatola (s1) che si rompe.
ha_forza _acquisita(u6) :- uomo(u6), pesante(u3), molto_grande(u6), scatola(s1),
urta(u6, s1), si_rompe(s1).
Ha forza acquisita una pietra pesante e
molto grande (p2) che si muove e
p2
o1
colpisce un altro oggetto (o1) che si
rompe.
ha_forza _acquisita(p2) :- pietra(p2), pesante(p2), molto_grande(p2),
in_movimento(p2), oggetto(o1), urta(p2, o1), si_rompe(o1).
Forza acquisita: Un'altra interpretazione del concetto di forza acquisita riguarda la
causa del moto degli oggetti.
Ha forza acquisita una pietra
u8
p3
(p3)che si muove spinta con
forza da un uomo (u8).
ha_forza _acquisita(p3) :- pietra(p3), uomo(u8), spinge(u8, p3), esercita_forza(u8, p3),
in_movimento(p3).
47
Non ha forza acquisita una pietra (p4)
che non si muove, non essendoci
p4
nessuna forza a spingerla.
¬ ha_forza _acquisita(p4) :- pietra(p4), ferma(p4), ¬ esercita_forza(x, p4).
Ha forza acquisita una pietra
(p5) che si muove nell'aria
u9
p5
lanciata da un uomo (u9).
ha_forza_acquisita(p5) :- pietra(p5), in_movimento(p5), in_aria(p5), uomo(u9),
lanciato_da(p5, u9).
Concludiamo con due esempi che riguardano entrambi i concetti.
p6
u10
48
p7
La pietra p6 è pesante e molto grande, e non si muove. Essa ha forza interna, ma
non acquisita.
ha_forza_interna(p6)
:- pietra(p6), pesante(p6), molto_grande(p6), ferma(p6).
¬ ha_forza_acquisita(p6) :- pietra(p6), pesante(p6), molto_grande(p6), ferma(p6).
La pietra p7 è simile alla pietra p6, ma ha sia forza interna che acquisita.
ha_forza_interna(p7)
:- pietra(p7), pesante(p7), molto_grande(p7),
in_movimento(p7), in_aria(p7), lanciata_da(p7, u10).
ha_forza_acquisita(p7)
:- pietra(p7), pesante(p7), molto_grande(p7),
in_movimento(p7), in_aria(p7), lanciata_da(p7, u10).
49