6. La dimostrazione - Dipartimento di Matematica

6. La dimostrazione
Cerchiamo ora di entrare all’interno del ‘laboratorio’ della matematica e della logica, la dimostrazione. Lo
faremo analizzando un esempio.
Uno dei teoremi più importanti e famosi della storia della matematica dice che “il rapporto tra lato e
diagonale del quadrato è incommensurabile”, cioè “non è uguale al rapporto tra due numeri interi”. La
dimostrazione risale ai Pitagorici, ma la consideriamo in una sua forma più moderna.
Osserviamo per iniziare che in una dimostrazione occorre che siano note le premesse da cui essa parte.
Nell’esempio che segue vedremo che esse consistono nel teorema di Pitagora e nelle proprietà elementari
della aritmetica.
Il teorema vale per ogni quadrato, siano l e d lato e diagonale di un generico quadrato.
Supponiamo per assurdo che esistano due numeri il cui rapporto sia uguale al rapporto tra essi, cioè
esistono m e n tali che d:l = m:n, ove m,n sono due numeri interi.
Se m,n non sono coprimi (non hanno cioè massimo comun divisore uguale ad 1) dividiamoli per il loro
massimo comun divisore ottenendo M ed N, e quindi esistono M, N coprimi. E di qui otteniamo d:l =M:N,
con M, N coprimi. Da cui d2 : l2 = M2 : N2
Dal teorema di Pitagora d2 = 2 l2, e quindi M2= 2N2
Ne segue che M2 è un numero pari. Ma se M2 è pari, ne segue che M è pari, e quindi M = 2K.
Sostituendo, otteniamo 4 K2 = 2 N2 e dividendo per 2 si ha 2 K2 = N2, e quindi N è pari.
Quindi M ed N sono pari e allora non sono coprimi (hanno massimo comun divisore 2), contrariamente a
quanto già asserito. Ne segue una contraddizione e quindi per assurdo la negazione della supposizione
iniziale. Ma il quadrato era qualsiasi e quindi il teorema vale per ogni quadrato.
Possiamo notare come ci siano dei passaggi abbastanza evidenti, ma non dimostrati. Ad esempio se M2 è pari,
ne segue che M è pari. Questa è una implicazione M2 pari  M pari, che può essere dimostrata a parte ed
usata nella dimostrazione principale: è un lemma, analogo alle subroutine in un programma. E l’abbiamo già
incontrato nel terzo capitolo: è la sottoderivazione della -introduzione.
Sin dall’inizio il teorema tratta di oggetti considerati nella loro universalità o nella loro esistenza. In una
dimostrazione dobbiamo poter trattare anche tali ‘quantificatori’.
La dimostrazione ha poi una struttura per assurdo, nella quale cioè si ipotizza la negazione della tesi da
dimostrare e si ottiene una contraddizione, il che ci costringe a dedurre la tesi. E’ una sottoderivazione che
abbiamo già incontrato come regola della eliminazione o introduzione della negazione.
IL CALCOLO LOGICO DEI PREDICATI CON LA DEDUZIONE NATURALE
Il sillogismo degli antichi greci trattava solo concetti universali e ad esempio permetteva di dedurre dalle
premesse {ogni ateniese è umano} e {ogni umano è mortale} la conclusione {ogni ateniese è mortale}.
La logica delle proposizioni trattata nei tutorials precedenti considerava solo proposizioni e permetteva di
dedurre dalle premesse { Socrate è ateniese} e {se Socrate è ateniese allora è mortale} la conclusione {Socrate
è mortale} tramite il modus ponens, oppure da {Se Socrate è ateniese allora Socrate è umano} e {Se Socrate
è umano allora è mortale} la conclusione {Se Socrate è ateniese allora è mortale} per la regola derivata della
transitività dell’ .
Ma non si poteva dedurre anche da {Socrate è ateniese} e {ogni ateniese è mortale} la conclusione {Socrate è
mortale}, mischiando così concetti universali e individui. Tale deduzione diventa possibile nella logica dei
predicati: tradotte nel nostro linguaggio le premesse sono: ateniese(Socrate) e x ateniese (x)  mortale(x),
e la conclusione è mortale(Socrate). La conclusione si può ottenere per modus ponens a patto di poter
realizzare la inferenza
x ateniese (x)  mortale(x)
usando quindi la regola
x p(x)
ateniese(Socrate)  mortale(Socrate)
p(t)
ove t è un qualsiasi termine individuale. Nel nostro esempio l’abbiamo trovata all’inizio, in …. per ogni
quadrato, siano l e d lato e diagonale del quadrato: abbiamo cioè, per elaborare una quantificazione
universale (per ogni quadrato), preso un quadrato generico (siano l e d lato e diagonale del quadrato). E’
questa la prima regola della deduzione naturale estesa alla logica dei predicati, la -eliminazione, ovviamente
corretta e in un certo senso estensione infinitaria della -eliminazione . Analogamente, come estensione
infinitaria della -introduzione possiamo costruire la regola, ovviamente corretta, della -introduzione:
p(t)
, cioè se abbiamo dimostrato che p è vero per un certo individuo t,
x p(x)
possiamo dedurre che esiste un individuo per cui p è vero. Nell’esempio abbiamo trovato qualcosa del genere
in dividiamoli per il loro massimo comun divisore e otteniamo che anche esistono M, N coprimi. Cioè
abbiamo calcolato due numeri coprimi e ne abbiamo dedotta una proposizione esistenziale.
La -introduzione si realizza in maniera abbastanza ovvia con la regola
p(x)
x p(x)
purchè x non appaia libera nelle premesse: cioè se abbiamo dimostrato p(t) senza alcun riferimento alla t
nelle premesse, possiamo supporre di averlo dimostrato per ogni t. Nel nostro esempio abbiamo trovato alla
fine Ma il quadrato era qualsiasi e quindi il teorema vale per ogni quadrato. Abbiamo così da una
costruzione particolare ricavato una proposizione universale: si noti che il quadrato era ‘qualsiasi’ e non un
quadrato particolare.
La - eliminazione richiede invece la costruzione di una sottoderivazione: supponiamo di avere una formula x
p(x), costruiamo una sottoderivazione che inizia con la assunzione p(c), purchè c
x p(x)
non appaia in precedenza. Se nella sottoderivazione, usando la assunzione e formule
p(c) assunz.
importate dalla derivazione principale, si giunge ad una formula B che non
import
contiene c si può esportare tale formula nella derivazione principale.
B
Anche questa è una prassi diffusa in matematica: abbiamo una formula che asserisce
l’esistenza di un individuo che verifica certe proprietà, senza però specificarlo;
B
si prosegue dicendo {chiamiamo c tale individuo…} : ad esempio dall’ipotesi “esiste un punto tale che….”
continuiamo dicendo “chiamiamo P tale punto….” , e se si giunge ad una proposizione che non dipende dal
nome c prescelto, possiamo continuare la dimostrazione dando tale proposizione per dimostrata. Nel nostro
esempio questa regola forniva il corpo stesso della dimostrazione, introdotta da che esistano due numeri …
m e n dai quali si costruiscono M e N. La sottoderivazione finisce quando si ottiene un risultato indipendente
da m e n (in questo caso una contraddizione).
La - eliminazione è la terza tecnica di sottoderivazione che abbiamo incontrata, dopo le regole di introduzione o eliminazione (la dimostrazione per assurdo) e -introduzione (il lemma). In generale le
sottoderivazioni costituiscono autentiche tecniche ausiliarie di dimostrazione, e possiamo così riassumere tali
tipi di sottoderivazione:
sottoderivazione
Lemma AB
Dimostrazione di A per assurdo
-eliminazione da x A(x)
assunzione
A
A
A(c)
c costante nuova
condizione di chiusura
B
contraddizione
B indipendente da c
export
AB
A
B
La costruzione di una dimostrazione per deduzione naturale si presenta quindi come la formalizzazione del
processo di costruzione di una dimostrazione formale, tramite l’assemblaggio opportuno di procedure
elementari. Dimostriamo per esempio x (p(x) q(x))  x p(x) x q(x)
x (p(x) q(x))
x (p(x) q(x))
x p(x)
assunz.
x p(x)
p(t)
-elim
Iniziamo scrivendo la premessa e il teorema, nel cui albero la
x (p(x) q(x)) import
radice è l’, e quindi si dovrà concludere con una -introduz.
x q(x)
p(t) q(t)
-elim
x p(x) x q(x)
q(t)
-elim
x q(x)
-intro
x p(x) x q(x) -intro
Verifica se si può dimostrare anche
x p(x) x q(x)  x (p(x) q(x) .
Le tecniche della deduzione naturale ci consentono di rappresentare in maniera formale ma fedele i
ragionamenti tipici del ragionamento logico concreto, ed inoltre ci mostrano in forma semplice tutte le
tecniche puramente sintattiche che si usano solitamente nelle dimostrazioni matematiche. Nel seguito del
corso però le dimostrazioni saranno fatte in maniera meno dettagliata, in uno stile più matematico che
strettamente logico.
SINTASSI E SEMANTICA
Come nella logica delle proposizioni scriveremo, per ogni interpretazione M e insieme di formule F: M F per
indicare che le formule F sono soddisfatte nella interpretazione M (M è un modello di F), e, se A è un altro
insieme di formule, A F per indicare che F è soddisfatto in tutti i modelli di A (per ogni M, se M A allora
M F).
Anche per la logica dei predicati valgono i teoremi di correttezza e completezza, così che : per ogni formula T,
Premesse  T se e solo se Premesse T .
Si può dimostrare un risultato equivalente alle ‘proprietà di completezza e correttezza’: il teorema di
esistenza del modello:
Un sistema di formule ammette un modello se e solo se non è contraddittorio
Intuitivamente se un sistema di formule è contraddittorio allora si può dimostrare in esso sia una
proposizione che la sua negazione, cosa che non può essere soddisfatta in nessun modello.
In altre parole se aggiungiamo assiomi per diminuire i modelli non dobbiamo esagerare: se gli assiomi
diventano contraddittori i modelli scompaiono!
Su tale teorema si basa la tecnica delle dimostrazioni per assurdo, nelle quali si vuole dimostrare Premesse 
T, mostrando che Premesse, T è contraddittorio. Infatti in tal caso non esistono modelli comuni a Premesse
e T, ed allora in ogni modello di Premesse T è falso e quindi T è vero. Ne segue che Premesse T e per
completezza Premesse  T.
Banalmente un controesempio k, cioè un k per cui p(k), ‘refuta’, cioè dimostra non valida, una formula
universale x p(x).
ESERCIZI.
Dimostra yx p(y,x)  x y p(y,x).
Si può dimostrare x y p(y,x)  yx p(y,x) ?
1. Dimostra y p(y)q(y)  y p(y) ) y q(y)
Si può dimostrare y p(y) ) y q(y)  y p(y)q(y) ?
Esempio del “greco filosofo”
Gli ‘assiomi’:
1. “Ogni greco è filosofo” x (g(x)f(x))
2. “Socrate è greco” g(s)
3. “Kant è filosofo” f(k)
Essendoci 2 predicati unari e due costanti, esistono 16 interpretazioni
g
f
Ø
{s}
{k}
{s,k}
Ø
{s}
{k}
{s,k}
m1
m2
Escluse quelle che violano gli assiomi (in blu quelle che violano l’assioma 1, in rosso quelle che violano
l’assioma2, in nero quelle che violano l’assioma 3), ne rimangono due: m1 in cui l’estensione di f è {s,k} e
quella di g è {s}, e m2 in cui l’estensione di f è {s,k} e quella di g è {s,k}.
Consideriamo due proposizioni:
“C’è un greco filosofo”
x g(x)f(x),
“Ogni filosofo è greco”
x (f(x)g(x))
Da un punto di vista semantico La prima formula è soddisfatta se GFØ, e questo è vero sia in m1 che in m2,
e quindi Assiomi x g(x)f(x). La seconda formula è soddisfatta se FG, e questo è vero in m2 ma non in m1,
e quindi Assiomi x (f(x)g(x)). Ovviamente la negazione della seconda formula x (f(x)g(x)) sarà vera
in m1 ma non in m2 e quindi Assiomi  x (f(x)g(x)).
E che accade se aggiungo agli Assiomi la negazione della prima formula x g(x)f(x) ? Il sistema di formule
diventa contraddittorio e non ammette modelli.
Da un punto di vista sintattico per la completezza dovrà essere Assiomi x g(x)f(x). E per il teorema di
esistenza del modello dovrà essere Assiomi,x g(x)f(x)  , ove  indica una qualsiasi contraddizione.
•
x (g(x)f(x)) prem.
•
g(s)
prem.
g(s)
prem.
•
f(k)
prem.
f(k)
prem.
•
g(s)f(s)
-elim
x (g(x)f(x)) prem.
•
f(s)
-elim
x( g(x)f(x))
•
g(s)f(s)
-intro
 g(s)f(s)
-elim
•
x (g(x)f(x)) -intro
f(s)
-elim
•
g(s)f(s)
-elim
•
f(s)
-elim
•
x (g(x)f(x)) prem.
f(s)f(s)
-intro
Per concludere, si dimostra facilmente la proprietà di monotonia: detti P e P’ sistemi di premesse tali che P 
P’, se P  T allora P’  T
Infatti se esiste una dimostrazione di T che usa premesse contenute in P, allora tale dimostrazione vale anche
per P’, in quanto le premesse utilizzate appartengono anche a P’. In altri termini aumentando le premesse i
teoremi già dimostrati continuano ad essere tali e quindi l’insieme dei teoremi non può ridursi.
IL GENERAL THEOREM PROVER: LE TAVOLE SEMANTICHE
Il problema della costruzione di un general theorem prover per l logica dei predicati è un tema centrale per il
ruolo della logica nella computer science. Esistono due approcci principali: uno semantico, le tavole
semantiche, uno sintattico, l’algoritmo di risoluzione. In realtà sono strettamente connessi tra di loro.
Semanticamente nella logica delle proposizioni le tavole di verità ci consentono di vedere in quali
interpretazioni una formula è vera e in quali è falsa. Nella logica dei predicati questo viene realizzato con
l’algoritmo delle tavole semantiche.
L’algoritmo, date due sequenze di formule A1, A2,…., An, e B1, B2, …., Bm, individua tutte le interpretazioni M
che soddisfano le Ai , cioè tali che M Ai per ogni i, e che refutano le Bj, cioè tali che M Bj per ogni j ( o
equivalentemente M Bj )
L’eliminazione deve garantire che l’unione delle interpretazioni soddisfatte dalle formule prodotte siano le
stesse della formula eliminata. Per i connettivi questo si realizza seguendo le tavole di verità. Indicheremo
che A è da refutare ponendo nella tavola A.
AB
A
( AB)
A
B
A
AB
A
(AB)
AB
B
A
B
B
B
ove
(AB)
P
B
significa che i modelli di P si
P
significa che i modelli di P si
ottengono come intersezione
Q
di quelli di Q con quelli di R.
A
ottengono unendo quelli di
Q
R
Q con quelli di R
R
Più complessi quelli con i quantificatori. Ricordando che x p(x) equivale a x p(x) e che  x p(x)
equivale a x  p(x),è sufficiente introdurre quelli col quantificatore universale
x p(x)
ove t1, t2, …., tk, sono tutti I termini liberi, cioè senza variabili,
p(t1)
(anche complessi) che già compaiono nelle tavole (se non costante
p(t2)
ce n’è nessuno si usa una nuova c). c è nuova nel senso che non
p(tn)
compare già nelle tavole). L’aggiunta di x p(x) significa che la
x p(x)
x p(x)
p(c)
procedura va ripetuta quando si creino nella tavola nuovi termini liberi.
L’algoritmo termina quando non ci sono più connettivi (escluso il ) da eliminare: nelle tavole foglie
dell’albero rimangono solo formule atomiche e loro negazioni. Associamo ad esse tutte le interpretazioni che
le soddisfano (i loro modelli). Se però in una tavola appaiono tanto una formula atomica P che la sua
negazione P, allora quella tavola non ammette modelli e si dice ‘chiusa’. L’unione dei modelli di tutte le
tavole ‘aperte’ è l’insieme delle interpretazioni che soddisfacevano le formule di partenza. Può tuttavia
accadere che l’albero ammetta rami infiniti, che rappresentano modelli delle formule d partenza la cui
costruzione è però infinitaria. Da qui deriverà il fatto che un general theorem prover per il calcolo dei
predicati è un algoritmo semidecidibile.
Infatti con le tavole semantiche si realizza un gtp ponendo come insieme delle formule di cui ricercare la
soddisfacibilità l’insieme Assiomi, T: se le tavole semantiche che ne derivano sono tutte chiuse allora
Assiomi  T e quindi Assiomi  T per completezza. Se tra le tavole ce n’è una aperta allora Assiomi  T e
quindi Assiomi  T per correttezza. Se in particolare la tavola aperta deriva da un ramo infinito allora
l’algoritmo non termina.
IL GENERAL THEOREM PROVER: LA RISOLUZIONE
La costruzione di un efficiente general theorem prover è un obiettivo fondamentale tanto teoricamente che
praticamente. La tecnica migliore sembra quella basata sulla regola di risoluzione, che si dimostra corretta con
le tavole
AB AC
di verità (verifica)
BC
Una deduzione fatta con essa è quindi corretta: se Assiomi R T allora AssiomiT. Ma in generale non è
completo: se AssiomiT, non è certo che Assiomi R T.
Dato un insieme di clausole S una refutazione di S è una deduzione da S di una contraddizione: S R 
La risoluzione viene utilizzata per costruire un general theorem prover. Si può costruire il gtp che verifica se
AssiomiT applicando la refutazione all’insieme di clausole dato da Assiomi + T:
Assiomi,TR 
Il calcolo per refutazione è corretto. Ma è completo? La risposta questa volta è si: se AssiomiT allora è
possibile trovare una refutazione Assiomi, TR 
Abbiamo una sola regola da applicare, ma come organizziamo il controllo sulla sua applicazione? Nella
maniera più ovvia: per essere sicuri di trovare una eventuale contraddizione (se esiste) occorre applicare la
regola di risoluzione in tutti i modi possibili.
Scriviamo il sistema di formule di cui provare la insoddisfacibilità in forma di clausola, e applichiamo (quando
possibile) ad ogni coppia di clausole la regola di risoluzione per ottenere una nuova clausola. La completezza
garantisce che se il sistema è insoddisfacibile se ne ricaverà una contraddizione. La procedura termina sempre
(è decidibile) nella logica delle proposizioni, termina sempre nei casi positivi (è semidecidibile) nella logica dei
predicati, così come con le tavole semantiche perché nei casi negativi la ricerca del controesempio non
termina e si crea un ramo infinito. Per il calcolo dei predicati la procedura non cambia, solo occorre fare in
modo che le variabili delle formule da cancellare coincidano.
I conclusione abbiamo algoritmi che risolvono il problema della dimostrabilità di una formula della logica
dei predicati da un sistema di assiomi in maniera solo semidecidibile, il teorema di Church dimostrerà che tale
limite non è superabile, nel senso che non esiste un algoritmo che risolva il problema in generale in maniera
decidibile.
PROBLEMI SVOLTI
1. Dimostrare con la deduzione naturale:
x (p(x)  q(x)), x p(x)  x (p(x)  q(x))
x (p(x)  q(x))
premessa
x p(x)
premessa
p(c)
assunzione per la -eliminazione
x (p(x)  q(x)) import
p(c)  q(c)
-eliminazione
q(c)
-eliminazione
p(c)  q(c)
-introduzione
x (p(x)  q(x)) -introduzione
x (p(x)  q(x))
uscita dalla -eliminazione (la formula non dipende da c)
2. Dimostrare con la deduzione naturale che
x (p(x)  q(x))  x ( p(x))  x q(x).
x (p(x)  q(x))
premessa
x ( p(x))
assunzione della -introduzione
 p(c)
assunzione della -eliminazione (c costante nuova)
x (p(x)  q(x))
import
p(c)  q(c)
-eliminazione
q(c)
-eliminazione
x q(x).
-introduzione
x q(x).
Sottoderivazione: -eliminazione (non dipende da c)
x ( p(x))  x q(x).
3.
sottoderivazione: -introduzione
a) Dimostra con la deduzione naturale che:
x (p(x)  q(x))  x p(x)  x q(x)
b) Si può dimostrare x p(x)  x q(x)  x (p(x)  q(x))?
-a) x (p(x)  q(x))
p(a)  q(a)
assunzione
p(a)
-eliminaz.
x p(x)
-introduz.
q(a)
-eliminaz.
x q(x)
-introduz.
x p(x)  x q(x) -introd.
x p(x)  x q(x)
b)
x p(x)  x q(x)
x p(x)
-eliminaz.
x q(x)
-eliminaz.
p(a)
assunzione
x q(x)
import
q(b)
assunzione
p(a)
import
p(a)  q(b) -introd.
??? no!
4.
Delle seguenti tre dimostrazioni, dire se sono corrette (e in caso negativo dire il perché).
a) x A(x), x (A(x)B(x))  x B(x)
b) x A(x)x B(x) x (A(x)B(x))
x A(x)
premessa
x (A(x)B(x))
premessa
A(t)
assunz.
A(c)
assunz. -elim.
x A(x)
-intro
x (A(x)B(x))
import
x A(x)x B(x)
import
A(c)B(c)
-elim.
x B(x)
-elim.
B(c)
-elim.
B(t)
-elim.
x B(x)
-intro.
A(t) B(t)
export -intro.
export -elim.
x (A(x)B(x))
-intro
x B(x)
x A(x)x B(x)
premessa
c) x A(x), x B(x)  x (A(x)B(x))
x A(x)
premessa
x B(x)
premessa
A(c)
assunz. -elim.
x B(x)
import
B(c)
assunz. -elim.
A(c)
import
A(c)B(c)
-intro.
x (A(x)B(x))
-intro.
x (A(x)B(x))
x (A(x)B(x))
export -elim.
export -elim.
La a) è corretta, la b) no, in quanto la terza riga fa una -introduzione su un termine che appare libero nella assunzione,
anche la c) è scorretta in quanto la seconda -eliminazione usa una costante non nuova.
5. Il barbiere di Siviglia rade tutti coloro che non si radono da sé e non rade coloro che si radono
da sé.
Questa proposizione ammette un modello ?
x (rade(x,x)  rade(G,x))  (rade(x,x)  rade(G,x))
x rade(x,x)  rade(G,x)
x rade(x,x)  rade(G,x)
rade(G,G)  rade(G,G)
rade(G,G)  rade(G,G)
x ……………
rade(G,G)
rade(G,G)
rade(G,G)  rade(G,G)
(sviluppo
rade(G,G)  rade(G,G)
rade(G,G)
rade(G,G)
identico)
rade(G,G)
rade(G,G)
Tutte le tavole si chiudono e quindi la formula non ammette alcun modello. Infatti se
Giovanni rade se stesso allora non rade se stesso e se non rade se stesso allora rade se
stesso: assurdo.
6. A: “non esistono corvi bianchi”, B: “ogni corvo non è bianco”
Scrivere A e B come fbf e dimostrarne l’equivalenza tramite le regole di trasformazione di
connettivi e quantificatori, tramite la deduzione naturale e tramite le tavole semantiche..
A: x (corvo(x)bianco(x)).
x (corvo(x)bianco(x))
x (corvo(x) bianco(x))
x (corvo(x)bianco(x))
corvo(t)
bianco(t)
B: x corvo(x)  bianco(x).
equivalente a
equivalente a
premessa
assunz. per -intro
assunz per -intro
x  (corvo(x)bianco(x))
equivalente a
x corvo(x)  bianco(x)
x corvo(x)  bianco(x)
premessa
x (corvo(x)bianco(x)) assunz.per -intro
corvo(c)bianco(c)
assunz.per -elim.
corvo(t)
import
corvo(c)
-elim.
bianco(t)  corvo(t)
-intro
bianco(c)
x (corvo(x)bianco(x))
-intro
x corvo(x)  bianco(x). import
x (corvo(x)bianco(x))
import
corvo(c)  bianco(c)
bianco(c)
assurdo
bianco(t)
export da -intro
corvo(t)  bianco(t)
x corvo(x)  bianco(x)
export da -intro
-intro
-elim.
-elim.
bianco(c)  bianco(c)
-intro
x bianco(x) bianco(x) -intro
x bianco(x)bianco(x) export da -elim.
assurdo
x (corvo(x)bianco(x))
export da -intro
x (corvo(x)bianco(x))
x corvo(x)  bianco(x)
(x corvo(x)  bianco(x))
x (corvo(x)bianco(x))
x (corvo(x)bianco(x))
x corvo(x)  bianco(x)
(corvo(c)  bianco(c))
corvo(c)bianco(c)
x (corvo(x)bianco(x))
corvo(c)  bianco(c)
corvo(c)
bianco(c))
bianco(c))
corvo(c)
 (corvo(c)bianco(c))
corvo(c)bianco(c)
corvo(c)
corvo(c)
corvo(c)
corvo(c)
bianco(c)
bianco(c)
bianco(c)
bianco(c)
 corvo(c)
bianco(c))
corvo(c)
bianco(c)
7. Consideriamo le seguenti proposizioni: <se la luna non è piena allora o i lupi mannari dormono
o i vampiri hanno fame>, <se i lupi mannari non dormono allora i vampiri non hanno fame>,
<se la luna non è piena allora i lupi mannari non dormono>.
Si dimostri che di
conseguenza <la luna è piena>. [suggerimento iniziale: individuare le proposizioni elementari
da utilizzare]
i)
con le tavole di verità
ii)
con la deduzione naturale
iii)
con le tavole semantiche
iv)
con la risoluzione
Il problema si risolve con la logica delle proposizioni. Poniamo L:<la luna è piena>, M:<i lupi mannari
dormono>, V: <i vampiri hanno fame>. Allora occorre dimostrare:
L  M  V , M  V , L  M.  L
i)
L M V M  V L  M  V M  V L  M Premesse Tesi (L)
0 0 0
0
0
1
1
0
0
0 0 1
1
1
0
1
0
0
0 1 0
1
1
1
0
0
0
0 1 1
1
1
1
0
0
0
1 0 0
0
1
1
1
1
1
1 0 1
1
1
0
1
0
1
1 1 0
1
1
1
1
1
1
1 1 1
1
1
1
1
1
1
Non si verifica mai che Premesse sia vero e Tesi falsa
ii)
L  M  V
premessa
M  V
premessa
L  M
premessa
L
assunzione per sottoderivazione per assurdo
L  M
import
M
-eliminazione
L  M  V
import
MV
-eliminazione
-eliminazione
V
M  V
import
M
MM
modus tollens
-introduzione: assurdo
export
L
iii)
L  M  V
M  V
L  M
L
L  M  V
M  V
L  M  V
M  V
L
M
L
L
L
L
M
M
L  M  V
V
L  M  V
M
L
L
M
M
V
V
MV
L
iv)
LMV
L
L
M
M
V
V
M
V
In forma di clausola le premesse + la negazione della tesi diventano:
L  M
MV
LM
M
L

L
8. Sapendo che <tutti i diplomatici sono abili>, <alcuni funzionari sono diplomatici>, <tutti i
funzionari sono statali>, dimostrare che <alcuni statali sono abili>.
i)
con la deduzione naturale
ii)
con le tavole semantiche
iii)
tradurre le proposizioni in linguaggio insiemistico
x d(x)  a(x), x f(x)  d(x), x f(x)  s(x)  x s(x)  a(x)
i)
x d(x)  a(x)
premessa
x f(x)  d(x)
premessa
x f(x)  s(x)
premessa
f(c)  d(c)
f(c)
d(c)
assunzione per la sottoderivazione di -eliminazione
-eliminazione
-eliminazione
x d(x)  a(x)
import
d(c)  a(c)
-eliminazione
a(c)
-eliminazione
x f(x)  s(x)
import
f(c)  s(c)
-eliminazione
s(c)
-eliminazione
s(c)  a(c)
x s(x)  a(x)
x s(x)  a(x)
ii)
x d(x)  a(x)
x f(x)  d(x)
x f(x)  s(x)
x s(x)  a(x)
x d(x)  a(x)
f(c)  d(c)
x f(x)  s(x)
x s(x)  a(x)
d(c)  a(c)
f(c)
d(c)
f(c)  s(c)
-introduzione
-introduzione, indipendente da c
export dalla -eliminazione
 (s(c)  a(c))
d(c)
f(c)
d(c)
a(c)
f(c)
d(c)
f(c)  s(c)
f(c)  s(c)
 (s(c)  a(c))
 (s(c)  a(c))
a(c)
f(c)
d(c)
s(c)
 (s(c)  a(c))
a(c)
f(c)
d(c)
s(c)
 s(c)
iii)
a(c)
f(c)
d(c)
s(c)
 a(c)
x d(x)  a(x)
DA
x f(x)  d(x)
FD  
x f(x)  s(x)
FS
x s(x)  a(x)
9.
a(c)
f(c)
d(c)
f(c)
 (s(c)  a(c))
SA  
Dimostrare con la deduzione naturale:
x y A(y,x)  y x A(y,x).
Vale il viceversa?
x y A(y,x)
y A(y,c)
A(t,c)
x A(t,x)
x A(t,x)
premessa
sottoderiv. -elim.
-elim.
-intro
export (non dipende da c)
y x A(y,x)
premessa
x A(t,x)
-elim.
A(t,c)
sottoderiv. -elim.
non posso scrivere y A(y,c) in
quanto t è libera nella assunzione, e
y x A(y,x)
-intro (t non libera nelle prem.)
quindi il viceversa non è dimostrabile
10. Dimostrare x (A(x) B)  (xA(x)) B
(xA(x)) B  x (A(x) B),
tenendo presente che x non compare libera in B (attenti alle parentesi!)
a) Con la deduzione naturale
x (A(x) B)
xA(x)
premessa
assunz. per (xA(x)) B
assunz. per -elim.
A(c)
x (A(x) B)
A(c) B
import
-elim.
-elim.
B
B
export dalla -elim.
(xA(x)) B
export per -intro
(xA(x)) B
A(t)
premessa
assunz. per A(t) B
xA(x)
(xA(x)) B
B
-intro
import
-elim.
A(t) B
export per -intro
x (A(x) B)
-intro
Da osservare che B si può esportare poiché non dipende da c, e che la -intro si può
fare perché t non è libera nella premessa.
b) Con le tavole semantiche
(xA(x)) B
x (A(x) B)
x (A(x) B)
((xA(x)) B)
xA(x)
(xA(x)) B
B(A(c))B)
x (A(x) B)
(xA(x)) B
A(c)
B
A(c) B
B
A(c)
x (A(x) B)
B
B
B
B
A(c)
A(c)
A(c)
A(c)
 A(c)
B
 (xA(x)
B
B
A(c)
 A(c)
c) x (A(x) B) e (xA(x)) B sono equivalenti?
(xA(x)) B equivale a  (xA(x))  B equivale a x (A(x))  B
equivale a x (A(x)  B) [x non è libera in B] equivale a
11. Dimostrare le leggi di de Morgan
a) Con la deduzione naturale (senza regole derivate non dimostrate)
x (A(x) B)
A  B   (A  B)
A  B   (A  B)
 (A  B)  A B
AB
AB
 (A B)
A  B
A  B assunz.
assunz.
A
assunz.
-intro
A
-elim
A B
import
AB
AB
import
A
-elim
 (A  B)
B
-elim
B
B
-elim
-intro
absurd
A
B
absurd -intro
 (A  B)
import
absurd
-intro
 (A  B)
B
A B
assunz.
-intro
 (A  B)
------------------------------ ------------ (A  B)  A  B
-intro
absurd
 (A  B)
import
B
 (A  B) assunz.
A B
A B
-intro
derivata
 (A  B)
import
-elim
absurd
A  B
b) Con le tavole semantiche
AB
(A  B)
AB
A B
 (A B)
(A  B)
 (A B)
A
A
A
B
B
B
 (A B)
B
B
 (A  B)
(A  B)
A
A
 (A  B)
A
B
A
 (A  B)
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
A
B
A
B
c) Si può dimostrare con la risoluzione?
La difficoltà consiste nel fatto che per usare la risoluzione dovevamo trasformare le formule in forma di
clausola e quindi usare già le leggi di de Morgan.
12. Dimostrare che x (A(x)B(x))  (x A(x))  (x B(x))
a) Con la deduzione naturale
x (A(x)B(x))
x A(x)
assunzione per l’ -intro
A(c)
assunzione per la -elim
x (A(x)B(x))
import
A(c) B(c)
-elim
-elim
B(c)
x B(x)
x B(x)
-intro,
export (non dipende da c)
(x A(x))  (x B(x))
export
b) Con le tavole semantiche
x (A(x)B(x))
 ((x A(x))  (x B(x)))
x (A(x)B(x))
x A(x)
x B(x)
x (A(x)B(x))
x B(x)
A(c)
A(c)
A(c)B(c)
B(c)
….x …………x ………
A(c)
B(c)
A(c)
….x …………x ………
A(c)
B(c)
B(c)
….x …………x ………
c) Si può dimostrare il viceversa? In caso negativo quale è il controesempio?
(x (A(x)B(x)))
(x A(x))  (x B(x))
 (A(c)B(c))
(x A(x))  (x B(x))
A(c)
B(c)
(x A(x))  (x B(x))
A(c)
B(c)
 (x A(x))
A(c)
B(c)
 A(c)
A(c)
B(c)
(x B(x))
A(c)
B(c)
B(d)
La tavola di destra non si chiude, e il controesempio è dato da una interpretazione per cui
c appartiene all’estensione di A, ma non a quella di B, mentre d appartiene all’estensione
di B. Per una tale interpretazione (x A(x))  (x B(x)) è vera, mentre x (A(x)B(x)) no,
poiché A(c)B(c) è falsa.
13. La proprietà transitiva della inclusione insiemistica è:
(AB  BC)  AC.
a) mostrala intuitivamente con una rappresentazione grafica
A
B
C
b) tramite trasformazioni dimostrare che è equivalente alla
formula
BC ( AB  AC)
Partendo da (AB  BC)  AC, questa è equivalente a
( AB  BC)  AC,
per de Morgan equivalente a
AB  BC  AC,
e quindi
BC  (AB  AC) e quindi
BC  (AB  AC) e da qui la tesi
c) tradurla in una formula della logica dei predicati, usando il
predicato binario .
(x (xA  xB)  x (xB  xC))  x (xA  xC)
d) Dimostrare tale formula (tautologia) con la deduzione
naturale.
O la si dimostra come tautologia partendo dall’insieme vuoto di
premesse o si usa il teorema di deduzione per scriverla come
x (xA  xB), x (xB  xC)  x (xA  xC)
x (xA  xB )
premessa
x (xB  xC)
premessa
tA
assunzione per -intro
x (xA  xB) import
tA  tB
-elim
tB
-elim
x (xB  xC)
import
tB  tC
-elim
tC
-elim
tA  tC
export per -intro
x (xA  xC)
-intro
e) Dimostrarla con le tavole semantiche.
x (xA  xB )
x (xB  xC)
x (xA  xC)
x (xA  xB )
x (xB  xC)
(dA  dC)
x (xA  xB )
x (xB  xC)
dA
 dC
dA  dB
dB  dC
dA
 dC
x …….
dA
dB
dB  dC
dB  dC
dA
 dC
x ……
dA
 dC
x ……
dB
dB
dA
 dC
x ……
dB
dC
dA
 dC
x …..
14. Dimostrare e dare l’interpretazione insiemistica della equivalenza tra
x (A(x)  B(x))
e x (A(x)  A(x)  B(x)).
A questo quesito si può rispondere in diversi modi. E’ tuttavia in ogni caso utile in primo luogo
tradurre le due formule in forma equivalente. La prima diventa:
x  (A(x)  B(x))
per la regola x
x 
x (A(x)  B(x))
per de Morgan
x (A(x)  B(x))
per la regola AB
AB
La seconda diventa
(x (A(x)  A(x) B(x))  (x (A(x) B(x)  A(x))).
Dopo di che, la traduzione insiemistica diventa immediatamente per la prima AB, e per la
seconda AA∩B. Da qui per ogni xA si ha che xA e xB, e allora per ogni xA si ha che
xB, e quindi AB. Questa è la dimostrazione in linguaggio insiemistico.
Un secondo metodo consiste nella dimostrazione della equivalenza delle due formule.
Partiamo dalla seconda, che diventa
(x (A(x)  (A(x) B(x)))  (x ((A(x) B(x))  A(x))). per la regola AB
AB (x (A(x)  (A(x)) (A(x)  B(x)))  (x (A(x)  B(x)  A(x)) per la
distributività e per de Morgan
Ma (A(x)  (A(x)) è una tautologia, e quindi, poiché dalle tavole di verità:
tautologia  A tautologia
e
tautologia  A A,
otteniamo:
x (A(x)  B(x)).
Un terzo metodo consiste nella dimostrazione della seconda dalla prima e viceversa tramite
la deduzione naturale. Poiché si tratta di sole quantificazioni universali e loro congiunzione,
possiamo ridurci alle due dimostrazioni
(A(t)  A(t) B(t)) (A(t) B(t)  A(t))  A(t)  B(t)
A(t)  B(t)  (A(t)  A(t) B(t)) (A(t) B(t)  A(t))
Entrambe si riducono a sottoderivazioni di -introduzione. La prima:
A(t)
assunzione
A(t)  A(t) B(t)
import
A(t) B(t)
-eliminazione
B(t)
-eliminazione
A(t)  B(t)
-introduzione
La seconda, essendo la tesi una congiunzione, richiede due sottoderivazioni di -introduzione:
A(t)
assunzione
A(t)  B(t)
B(t)
A(t) B(t)
import
-eliminazione
-introduzione
A(t) B(t)
assunzione
A(t)
A(t) B(t)  A(t)
-eliminazione
-introduzione
A(t)  A(t) B(t) -introduzione
15. Date le due formule
x (A(x)  B(x))
x (A(x)  (A(x)  B(x))).
a) Dimostrare tramite trasformazioni l’equivalenza di tali formule tra di loro e con le
formule
x (A(x)  B(x))
e x (A(x)  (A(x)  B(x))) .
b) Dette A e B (rispettivamente) le estensioni dei predicati A(x) e B(x), tradurre le 4
formule precedenti in linguaggio insiemistico. Ti sembrano intuitivamente
equivalenti?
c) Se ad esempio interpretiamo A(x) come ‘x è primo’ e B(x) come ‘x è dispari’ le
formule sono soddisfatte? Perché?
d) Dimostrare la prima dalla seconda e la seconda dalla prima tramite la deduzione
naturale
e) Dimostrare la prima dalla seconda e la seconda dalla prima tramite le tavole
semantiche
a) x (A(x)  A(x)  B(x)) equivalente a x (A(x)  (A(x)  B(x))) equivalente a
x (A(x)  A(x))  (A(x)  B(x)) equivalente a x (A(x)  B(x)) equivalente a
x (A(x)  B(x)). La penultima è anche equivalente a x (A(x)  B(x))
equivalente a
x (A(x)  B(x)).
Essendo (A(x)  B(x))  A(x) una tautologia, anche la quarta formula è equivalente.
b) A  B, A  A  B, A  B = , A = A  B
A
B
c) La formula viene interpretata come “ogni numero primo è dispari” o anche “l’insieme
dei numeri primi è incluso nell’insieme dei numeri dispari”, ed è falsa in quanto 2 è
primo ma non dispari.
d) x (A(x)  B(x))  x (A(x)  (A(x)  B(x))) x (A(x)  (A(x)  B(x)))  x (A(x) 
B(x))
x (A(x)  B(x))
premessa
assunz. per -intro
A(t)
x (A(x)  (A(x)  B(x)))
A(t)
premessa
assunz. per -
intro
x (A(x)  B(x))
e)
import
x (A(x)  (A(x)  B(x)))
import
A(t)  B(t)
-elim.
A(t)  A(t)  B(t)
B(t)
-elim.
A(t)  B(t)
-elim.
A(t)  B(t)
-intro
B(t)
-elim
A(t)  (A(t)  B(t)) export -intro
A(t)  B(t))
x (A(x)  (A(x)  B(x))).
x (A(x)  B(x))
-elim.
export -intro
x (A(x)  B(x))
x (A(x)  (A(x)  B(x)))
x (A(x)  (A(x)  B(x)))
x (A(x)  B(x))
x (A(x)  B(x))
(A(c)  (A(c)  B(c)))
x (A(x)  (A(x)  B(x)))
(A(c)  B(c))
x (A(x)  B(x))
x (A(x)  (A(x)  B(x)))
A(c)
A(c)
(A(c)  B(c))
B(c)
A(c)  B(c)
A(c)  (A(c)  B(c))
A(c)
A(c)
A(c)
B(c)
A(c)  B(c)
A(c)  B(c)
A(c)
A(c)
B(c)
B(c)
 A(c)
A(c)  B(c)
A(c)
A(c)
A(c)
B(c)
B(c)
B(c)
A(c)
B(c)
B(c)
16. Nella logica delle proposizioni, sapendo che “se la luna è bianca allora è
fatta di formaggio” e che “la luna non è nera” dimostrare che “se la luna è
bianca o nera allora è fatta di formaggio”
a) Con le tavole di verità
b) Con la deduzione naturale
c) Con la risoluzione
a) Indichiamo con A la frase “la luna è bianca”, con B la frase ““la luna è fatta
di formaggio”, con C la frase “la luna è nera”, allora le ipotesi sono AB e
C, la tesi da dimostrare è (AC)B. Con le tavole di verità
A B C C AB AC (AC)B
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
1
0
1
0
1
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
0
0
Le interpretazioni in cui le ipotesi
sono vere sono segnate dalla linea
rossa, e si vede che in tali casi anche
la tesi è vera, e quindi ne è
conseguenza logica, e quindi un
teorema
1 1 0
1 1 1
b)
1
0
1
1
1
1
AB
premessa
C
premessa
1
1
(AC)
assunz. per -intro.
C
A
import
-elim.
AB
import
B
--elim
export -intro
(AC)B
c) In forma di clausola AB diventa AB, e la negazione della tesi
 ((AC)B) diventa (AC) (B), allora l’algoritmo di risoluzione ci dà:
AB
C
B
A
AC
A

17. a) Scrivere come formula della logica dei predicati i due assiomi:
“c non segue nessun elemento”, “per ogni elemento c’è un elemento che
lo segue”
utilizzando la costante ‘c’ e il predicato binario ‘segue’.
b) con le tavole semantiche ricavare tutti i modelli del sistema formato
dai due assiomi
a) le formule sono x segue(c,x) e x y segue(y,x)
b)
x segue(c,x)
x y segue(y,x)
segue(c,c)
y segue(y,c)
x segue(c,x)
L’universo di Herbrandt all’inizio è
formato dal solo c:
H ={c}
x y segue(y,x)
segue(c,c)
segue(d,c)
x segue(c,x)
x y segue(y,x)
L’universo di Herbrandt diventa ora
H ={c, d}.
Ripetendo le regole precedenti sul
nuovo termine d;
L’universo di Herbrandt diventa ora
segue(c,c)
segue(d,c)
segue(c,d)
segue(d’,d)
x segue(x,c)
x y segue(y,x)
H ={c, d, d’}.
Iterando sempre le stesse regole verranno creati infiniti
termini e l’universo di Herbrandt diventa
H ={c, d, d’, d”, d”’, ….}. che in quest’ordine si seguono
mentre c non segue alcun termine:
c
d
d’
d”
d”’
………
Tutti i modelli che verificano questa condizione sono modelli dei due
assiomi.
Se invece il primo assioma era “nessun elemento segue c” i due assiomi
non ammetterebbero modelli essendo contraddittori: nelle tavole
sarebbero apparsi segue(d,c) e segue(d,c)
18. . Dimostrare con la deduzione naturale e con le tavole
semantiche
x A(x)  x B(x)  x (A(x)  B(x))
x A(x)
x B(x)
A(t)
x A(x)  x B(x)
x (A(x)  B(x))
x A(x)
x A(x)  x B(x)
x A(x)  x B(x)
 (A(c)  B(c))
x B(x)
x A(x)  x B(x)
B(t)
B(c)
A(t)  B(t)
A(c)
x (A(x)  B(x)
x B(x)
 x A(x)
A(c)
A(c)
B(c)
B(c)
B(c)
A(c)
A(c)
A(c)
B(c)
B(c)