Introduzione
alla
LOGICA MATEMATICA
Corso di Matematica Discreta.
Corso di laurea in Informatica.
Prof. Luigi Borzacchini
V. La logica dei predicati.
Sintassi e semantica
Analisi della proposizione
• <il gatto miagola> è una proposizione in cui la logica
tradizionale distingueva un soggetto (il gatto) e un
predicato (miagola). Ma <Nicola ama Francesca> è
una proposizione con un soggetto (Nicola), il cui
predicato ha però una struttura complessa (ama
Francesca), e equivalente ad un’altra proposizione:
<Francesca è amata da Nicola> con soggetto
Francesca e un predicato complesso e differente.
• Frege analizza la proposizione come formata da un
predicato (amare) e due argomenti (Nicola,
Francesca), scritto come amare(Nicola, Francesca) ,
l’ordine degli argomenti è per convenzione.
La sintassi
• Oltre i connettivi, esistono predicati e termini (che
fungono da argomenti).
• Un predicato è n-ario se richiede n argomenti: ‘è
pari’ è unario, ‘amare’ binario, ‘dare’ ternario (<A dà
B a C>). Un predicato coi suoi argomenti è una
proposizione atomica, che può essere vera o falsa.
• Esistono termini variabili, con cui formare
proposizioni con argomento non fissato: <x è pari>,
pari(x), il cui valore di verità dipende da x.
• Esistono termini complessi formati da una funzione
con argomenti: somma (3,7), cioè 3+7.
Fare attenzione! La confusione tra
termini complessi e proposizioni è
fonte di innumerevoli errori!
• 3+5 non è né vero né falso, quindi non è una
proposizione, bensì un termine complesso, che in
aritmetica coincide col numero 8.
• 3<5 invece non è un termine, infatti non è uguale a
nessun numero: è una proposizione, in particolare
in aritmetica è una proposizione vera
• AB non è una proposizione, ma è un termine
complesso, è infatti un insieme formato da A e B
• A B non è un insieme e quindi non è un termine
complesso, ma una proposizione, vera o falsa
• madre (Anna, Francesco) posso tradurlo come
<Anna è la madre di Francesco>, è una proposizione
atomica ed è vera o falsa, madre (Francesco) è
invece ragionevolmente l’individuo <madre di
Francesco>: è un termine complesso e non una
proposizione.
• Si può distinguere dal contesto: un termine è
sempre argomento di un predicato o di una
funzione, un predicato non lo è mai: <la madre di
Francesco legge l’Iliade> diventa legge
(madre(Francesco), Iliade), e la stessa formula
traduce frasi come <l’Iliade è letta dalla madre di
Francesco>, <legge l’Iliade la madre di Francesco>,
etc.
Quantificatori
• Se voglio esprimere la frase <tutti gli studenti sono
bravi> posso scrivere bravo(Antonio) 
bravo(Michele)  bravo(Giuseppe)  …., scomodo se
gli studenti sono molti, impossibile se parlo di
infiniti individui.
• Per espressioni del tipo ‘ogni’, ‘tutti’, etc. si
introduce il quantificatore universale  davanti alla
variabile che esprime il generico individuo, e scrivo:
x bravo(x).
• Analogamente per espressioni del tipo ‘esiste un’,
‘c’è un’ si introduce il quantificatore esistenziale :
<c’è uno studente bravo> diventa x bravo(x)
• Ma, mentre bravo(x) ha un valore di verità che
dipende da x che si dice variabile libera, x bravo(x)
e x bravo(x) hanno un valore di verità ben definito.
In tal caso la variabile x si dice saturata.
• Solo i quantificatori e i connettivi vengono
considerati costanti logiche nella logica dei
predicati. Esistono altri segni, usati in logiche più
forti o in matematica con un significato fisso, ma
che non fanno parte della sintassi di base della
logica, quali l’ = (usato in logica dei predicati con
uguaglianza e in aritmetica), il  (usato in teoria
degli insiemi), |x (esiste uno e un solo x, usato in
matematica ma sostituibile in logica dalla formula
• Essendo i quantificatori delle estensioni infinitarie di
 e , ad essi si estendono le proprietà relative, ad
esempio le leggi di de Morgan diventano
l’equivalenza tra x p(x) e x  p(x), <non ogni
studente frequenta> equivale a <esiste qualche
(almeno uno) studente che non frequenta> e quindi
ovviamente tra  x p(x) e x  p(x), <non esistono
corvi verdi> equivale a <ogni corvo non è verde> o
anche <ogni corvo è non verde>.
• La commutatività di  e  si traduce nella
commutatività dei quantificatori dello stesso tipo:
• x y equivale a y x, e analogamente x y
equivale a y x, ma non vale tra connettivi diversi
Sintassi della logica dei predicati
• La sintassi della logica dei predicati include la
sintassi della logica delle proposizioni (che include i
connettivi). In aggiunta regole per specificare la
struttura dei termini e delle proposizioni:
• Le costanti a, b, … e le variabili x, y, … sono termini
• Se f è una funzione n-aria e t1 , t2 …., tn sono
termini, f(t1 , t2 …., tn) è un termine
• Se p è un predicato n-ario e t1 , t2 …., tn sono
termini, p(t1 , t2 …., tn) è una proposizione
• Se P è una proposizione x P e x P sono
proposizioni (fbf, formule ben formate). Useremo
Linguaggio logico e linguaggio naturale
• Il linguaggio logico presume di essere in grado di
eliminare le ambiguità sintattiche del linguaggio
naturale. Ambiguità lessicale: <la vecchia porta la
sbarra>, ambiguità sintattica: <Giovanni vede Mario
che è malato e piange>.
• La seconda frase può essere tradotta in due modi
differenti:
• vede(Giovanni, Mario)  malato(Mario)  piange (Mario),
• vede(Giovanni, Mario)malato(Mario)  piange (Giovanni).
• Le ambiguità lessicali si risolvono usando simboli
diversi: ad esempio vecchia_adj , vecchia_sost
• Le proprietà (attributi, come ‘pari’, ‘rosso’, ‘alto’, o
verbi intransitivi, come ‘corre’, ‘piange’, ‘nasce’)
divengono predicati unari, mentre le relazioni (verbi
transitivi, come ‘amare’, ‘dare’, ‘leggere’) divengono
predicati binari. Tuttavia per i verbi possono esserci
paradigmi più complessi: <Nicola corre nello stadio>
diventa corre(Nicola, stadio), <Francesco dà l’Iliade
a Maria> diventa dare(Francesco, Iliade, Maria).
• I pronomi si traducono usando le variabili: <Nicola
capisce quello che è scritto> diventa
scritto(x) capire(Nicola,x), e <Nicola capisce tutto
quello che è scritto> diventa x scritto(x)
capire(Nicola,x), <Nicola capisce qualcosa di scritto>
• In genere le frasi di tipo esistenziale si traducono in
formule introdotte da x che agisce su una
congiunzione: <c’è uno studente bravo> diventa
• x (studente(x) bravo(x)). Se scrivessi
• x (studente(x) bravo(x)) sarebbe da intendere
come <c’è qualcuno che se è studente è bravo>
• In genere le frasi di tipo universale si traducono in
formule introdotte da x e seguite da una
implicazione: <ogni studente è bravo> diventa
• x (studente(x) bravo(x)). Se scrivessi
• x (studente(x)  bravo(x)) sarebbe da intendere
<tutti sono bravi studenti>
Universalità Semantica
• Si presume che la logica dei predicati sia
semanticamente universale, sia nel senso di poter
esprimere compiutamente ogni frase, sia nel senso
di poter da tali espressioni poter descrivere
(formalmente) tutte le argomentazioni possibili
logicamente (in senso intuitivo).
• Tuttavia una tale espressione non è banale e
richiede sempre, per essere realizzata, una
‘traduzione’ della frase di partenza in termini
equivalenti intuitivamente, ma spesso abbastanza
diversi. Non è in generale automatizzabile e quindi
richiede una abilità che si ottiene dagli esercizi.
• Visto che esistono frasi ambigue che ammettono
una traduzione logica non ambigua, la traduzione di
una frase dal linguaggio naturale al linguaggio della
logica dei predicati non è quindi un algoritmo in
senso stretto, ma esistono tecniche e regole
(euristiche, cioè che aiutano a risolvere il problema
anche se in maniera approssimata e non univoca).
• La traduzione di frasi o ragionamenti non formali in
un linguaggio formale è ovviamente non
formalizzabile, e questa è ad esempio la principale
difficoltà nella comprensione o traduzione
automatica dei linguaggi naturali, ma è forse la
principale attività creativa nella computer science.
• Ad esempio: <nessuno studente corre> si può
tradurre con <ogni individuo, se è uno studente
allora non corre>, e quindi x (studente(x)
corre(x)). O equivalentemente <non esiste uno
studente che corre>:  x (studente(x)corre(x)).
• Ma tale equivalenza, oltre che intuitiva, può essere
verificata rigorosamente. Infatti la seconda formula
è equivalente a x (studente(x) corre(x)),
equivalente a x (studente(x) corre(x)),
equivalente a x (studente(x) corre(x)), ma
anche a x (corre(x) studente(x)), che si traduce
nella frase <ogni individuo, se corre non è uno
studente>, anch’essa equivalente intuitivamente
• Traduci come fbf della logica dei predicati le frasi:
•
•
•
•
•
•
•
•
•
•
•
•
<Ognuno ama qualcuno>
x y ama(x,y)
<Ognuno ama suo padre>
x ama(x,padre(x)) o x y padre(y,x)ama(x,y)
<Ognuno ama chi lo ama>
x y ama(y,x) ama(x,y)
<Nessuno ama chi ama se stesso>
x (ama(x,x)
y ama(y,x))
<C’è chi non ama nessun altro>
y (x x=y
ama(y,x))
<C’è chi ama solo se stesso>
y (ama(y,y)  x ( x=y
ama(y,x)))
Scrivi le fbf corrispondenti alle proposizioni
matematiche
<se un numero è primo e diverso da 2 allora è
dispari>, usando i predicati unari ‘numero’, ‘primo’,
‘pari’.
x (numero(x)  primo(x)  x=2)
pari(x) equiv.
x numero(x) ((primo(x)  x=2)
pari(x))
“dati due numeri, uno maggiore dell’altro, esiste
sempre un numero compreso fra di essi”, usando il
predicato binario ‘maggiore’ (>)
x y (numero(x)  numero(y)  x>y) z
(numero(z)  x>z z>y) o anche x y (x>y z (x>z
z>y)). x e y potrebbero essere uguali?
• Traduci in linguaggio italiano le formule, trasformale
in proposizioni equivalenti e traduci in linguaggio
insiemistico:
• x (studente (x)  tifoso(x))
• «non esiste uno studente che non sia tifoso»
•  x (studente (x)tifoso(x))  x
studente(x)tifoso(x)  x studente(x)tifoso(x)
«ogni studente è tifoso». Studenti  Tifosi
• x (studente (x)  corre(x)).
• «non tutti gli studenti corrono»
• x (studente(x)  corre(x)) x (studente(x)
 corre(x)) «c’è almeno uno studente che non
corre». Studenti  Corridori  Ø
• Dimostrare l’equivalenza della seguente coppia di
proposizioni: <non esiste il massimo numero
primo> e <dato un qualunque numero primo esiste
un numero primo maggiore di esso> (usare, oltre
le primitive logiche incluso l’=, il predicato unario
‘n è un numero primo’, indicato con primo(n), e il
predicato binario ‘n è maggiore o uguale di m’,
indicato con n≥m).
• Le formule che traducono le due proposizioni
matematiche sono:
•  x (primo(x)  y primo(y)  x≥y)
e
x (primo(x)  y (primo(y)   x≥y))
• Dalla prima  x (primo(x)  y primo(y)  x≥y)
si ottiene la seconda
x (primo(x)  y (primo(y)   x≥y)) coi passaggi:
• x  (primo(x)  y primo(y)  x≥y)
per la regola x equivalente a x 
• x ( primo(x)   y ( primo(y)  x≥y)) per de
Morgan e la regola AB equivalente a AB
• x ( primo(x)  x  ( primo(y)  x≥y))
per la regola x equivalente a x 
• x ( primo(x)  x ( primo(y)   x≥y)) da cui la
seconda formula per la regola
AB equivalente a  AB
a) Scrivere come formule della logica dei predicati le frasi “non esiste
il minimo numero positivo” e “per ogni numero positivo esiste un
numero positivo minore di esso”, usando la costante 0, il predicato
unario numero ed il predicato binario > (maggiore di).
le due frasi diventano le formule:
 x (n(x)  x>0  y n(y)  y>0  (x>y))
x n(x)  x>0  y (n(y)  y>0  x>y)
b) dimostrare che le due formule sono equivalenti
 x (n(x)  x>0  y n(y)  y>0  (x>y))
 x equival. x 
x  (n(x)  x>0  y n(y)  y>0  (x>y))
de Morgan
x  n(x)   (x>0)   y (n(y)  y>0  (x>y))  x equival. x 
x  n(x)   (x>0)  y  (n(y)  y>0  (x>y))
A  B equival.  A  B
x  n(x)   (x>0)  y  ((n(y)  y>0)  (x>y)) de Morgan
x  (n(x)  (x>0))  y (n(y)  y>0  x>y)
A  B equival.  A  B
x n(x)  x>0  y (n(y)  y>0  x>y)
• Tra quantificatori dello stesso tipo vale la proprietà
commutativa, cioè xy p(x,y) è equivalente a
yx p(x,y) e x y p(x,y) è equivalente a yx
p(x,y). Ma la commutatività non vale per
quantificatori diversi: x y p(x,y) non è
equivalente a yx p(x,y).
• Ad esempio <ogni uomo ama una donna> può
essere tradotta in due formule distinte: x y
(uomo(x) ama(x,y) e yx (uomo(x) ama(x,y)),
che in realtà traducono due sensi distinti della frase
iniziale: <per ogni uomo c’è una donna particolare
(l’anima gemella di tale uomo) che lui ama>, e <c’è
una donna speciale (Marylin Monroe) che tutti gli
uomini amano>.
• Si possono eliminare i quantificatori esistenziali,
sostituendo la variabile quantificata con una
costante (se non è all’interno dell’azione di una
quantificatore universale) o con una funzione che
dipende dalle variabili quantificate universalmente
nel cui campo d’azione sta la variabile quantificata
esistenzialmente (skolemizzare).
• Nell’esempio precedente le due formule potrebbero
essere espresse da x (uomo(x) ama(x, animagemella(x)), e x (uomo(x) ama(x,Marylin))
• Questa è una delle regole che permettono di
scrivere ogni fbf in forma di clausola.
• Eliminiamo l’ tramite A B equivalente a AB
• Il  si trasferisce sulle formule atomiche scendendo
lungo l’albero tramite le trasformazioni:  P  P
• (PQ)   PQ
(PQ)   PQ
• x p(x)  x p(x
x p(x)  x p(x)
• Il quantificatore esistenziale viene eliminato tramite
la ‘skolemizzazione’: se nessun  lo precede:
x p(x)  p(c) ove ‘c’ è una ‘costante nuova’
• altrimenti x1 x2 … xn … y p(x1, x2 … ,xn, y) 
x1 x2 … xn p(x1, x2 … ,xn, f(x1, x2 … ,xn)) ove f è
un simbolo funzionale nuovo
• Tutti i quantificatori universali in cima all’albero.
• Distributività: A  (B C)  (A B)  (A C)
La forma di clausola
•
•
•
•
•
• A1
•
•
x1 x2 … xn
La forma di
clausola è una
congiunzione

di clausole.
La clausola è una
    ……  disgiunzione di
proposizioni
atomiche e di
A2 … An
  …..  loro negazioni,
con le variabili
quantificate
B1 B2
Bm universalmente
• y x (p(x)  z (q(x,y)  p(z)))
•
•
y
y
x
x
•
x
x


•


p(x) 


• p(x)
p(x) z
p(f(x)) p(x)
p(x)
•
z
 q(f(x), c) q(f(x), c) p(f(x))
•

p(z)
• q(z,y)
q(z,y)
•
p(z)
2 clausole
• x (p(x) 
q(f(x), c))  (p(x)  p(f(x)))
Interpretazione
• L’uso di termini come ‘amare’, ‘bravo’, etc. è solo
mnemonico, poiché i segni non hanno in partenza
una interpretazione definita: amare(Nicola,
Francesca) rappresenta solo un predicato binario
applicato a due termini costanti, e quindi potrebbe
anche rappresentare la frase <7 è maggiore di 2>.
• Una interpretazione può essere fissata dando con il
 una definizione tramite segni già interpretati. Ad
esempio pari(x)  y x=2y, supponendo già noto
che stiamo parlando di numeri interi, e 2 e  già
interpretati con il loro usuale significato aritmetico.
• La semantica della logica dei predicati è
estensionale, cioè il significato di un predicato p
(per semplicità supponiamolo unario) è dato
dall’insieme P degli individui che lo soddisfano:
• P = {x| p(x)},
xP  p(x)
(insieme degli x che soddisfano p) (x appartiene a P)
L’interpretazione di pari è data dall’insieme dei
numeri pari P={0, 2, 4, 6, 8, …}, l’insieme degli oggetti
rossi è dato dagli oggetti rossi, un oggetto appartiene
all’insieme degli oggetti rossi se è rosso: aP bP
a
P
b
P
a
b
• L’interpretazione dei connettivi e quantificatori
(costanti logiche) è fissa, ed è data dal loro uso nelle
derivazioni oltre che dal loro ruolo nella semantica.
• In matematica useremo anche l’= come una
primitiva
• L’interpretazione di predicati, funzioni e termini
costanti, se non è data da una definizione logica, è
data dall’esterno.
• Una interpretazione può essere anche fissata
tramite una definizione ricorsiva. Ad esempio,
parlando di numeri interi, pari(x) può essere così
definita: i) pari(0), ii) pari(x) pari(x+2), iii) per
nessun altro x si ha pari(x).
• Per esempio interpretiamo la formula:
x y f(x,y)=c. Le primitive sono  ,, =
• Prendiamo -{0} come universo del discorso.
Interpretiamo la costante c con 1, il simbolo
funzionale binario f come la funzione ‘prodotto’.
Con questa interpretazione, l’interpretazione della
fbf è «per ogni numero esiste un altro numero tale
che il loro prodotto è uguale a 1»: in tale
interpretazione la formula è soddisfatta.
• Prendiamo come universo il piano, c è un punto, f la
funzione ‘punto medio’, la formula diventa la frase
«preso un punto fisso c, ogni punto ammette un
punto simmetrico rispetto a c»
x c y
• a) Scrivere come formule della logica dei predicati
(con uguaglianza) le frasi: “Solo 0 e 1 soddisfano
l’equazione x2 = x.”, “Per il  vale la proprietà
commutativa ed esiste l’elemento identico”
•
x (x2 = x) x=0  x=1
•
x y (xy = yx)  z x xz = zx = x
• b) skolemizzare la formula: x y z yz=zy=x,
• y yf(y)=f(y)y=c
• c) interpretare la  come il prodotto tra numeri,
c=1, e usare come universo del discorso , e {0}. In quali di queste interpretazioni la formula è
soddisfatta, e perchè?
Teoria degli insiemi.
• I concetti elemento/insieme col segno di
‘appartenenza’  corrispondono ai concetti di
termine/predicato e la notazione predicativa nella
logica dei predicati. Le operazioni e relazioni
insiemistiche possono essere definite logicamente
in questo nuovo ambito:
• AB se e solo se x xA xB.
• A=B se e solo se x xA  xB.
• C=AB ove xC  (xA)(xB)
• C=AB ove xC  (xA)(xB)
• B=A se e solo se x xA  xB.
• Le proprietà insiemistiche viste in precedenza in
modo intuitivo possono ora essere dimostrate
rigorosamente. Ad esempio la legge di de Morgan:
AB = AB si dimostra così logicamente: x(AB)
 x(AB)  (xAxB)  xA  xB 
xA  xB  x AB
• La coppia insiemi/predicati corrisponde alla coppia
semantica/sintassi, rigorosamente distinte in logica.
• La distinzione non è altrettanto netta nel linguaggio
naturale: <il centromediano è alto e veloce>,
<entrano prima donne e bambini>. Gli attributi nel
primo caso sono congiunti, nel secondo disgiunti
(non si parla delle sole ‘bambine’). Perché?
Siano dati gli insiemi A={rosso, verde}, B={2,3,5}, C={5,7}.
Quali sono gli insiemi AB, AC, BC ?
Verifica che A( BC) = (AB)(AC)
Dimostralo per A, B, C qualsiasi.
AB = {(rosso,2), (rosso,3), (rosso,5), (verde,2), (verde,3), (verde,5)}
AC = {(rosso,5), (rosso,7), (verde,5), (verde,7)}
BC = {5}
A( BC) = { (rosso,5), (verde,5)} = (AB)(AC)
Due insiemi sono uguali se hanno gli stessi elementi. Essendo prodotti
cartesiani di due insiemi gli elementi sono coppie (x,y).
(x,y)  A( BC) sse xA  y( BC) sse xA  y B  y C
(x,y)  (AB)(AC) sse (x,y)  (AB)  (x,y)  (AC)
 (yB)  (xA)  (yC) sse xA  y B  y C.
sse (xA)
Traduci in forma logica le seguenti espressioni insiemistiche:
A  (A  B) = A
A  (A  B) = A
Dimostrale con tecniche logiche o insiemistiche.
In forma logica le due espressioni diventano:
A  (A  B)  A
A  (A  B)  A
Logicamente si dimostrano con le tavole di verità:
A B A  B A(A  B) A  (A  B)  A (A  B) A  (A  B) A  (A  B)  A
0 0
0
0
1
0
0
1
0 1
0
0
1
1
0
1
1 0
0
1
1
1
1
1
1 1
1
1
1
1
1
1
Insiemisticamente la dimostrazione ha un carattere più intuitivo: occorre
dimostrare che due insiemi sono uguali e quindi hanno gli stessi elementi:
xA se e solo se x A  (A  B). Per la proprietà distributiva
xA se e solo se x (A  A)  (A B).
Ma A  A = A da cui xA se e solo se x A  (A B).
ma A  A B, da cui la tesi. Analogamente per l’altra espressione.
Se p(x) è il predicato la cui estensione è l’insieme P, e q(x) è il
predicato la cui estensione è l’insieme Q, scrivi la formula
della logica dei predicati la cui interpretazione insiemistica è
PQ  Ø
x ( p(x)  q(x))
Scrivere le formule di teoria degli insiemi per rappresentare
le frasi: <nessuno studente è pigro e svogliato> e
<non tutti gli studenti sono pigri e svogliati >
Studenti  (Pigri  Svogliati) = 
equivalente alla formula  x St(x)  P(x)  Sv(x)
Studenti  (Pigri  Svogliati) ≠ 
equivalente alla formula
x St(x)  (P(x)  Sv(x))
Studenti  (Pigri  Svogliati) ≠ 
(Studenti  Pigri)  (Studenti  Svogliati) ≠ 
<c’è un studente non pigro o uno studente non svogliato>
a) Scrivere come formule della logica dei predicati le
seguenti frasi “Nessun A è B”, ”Qualche C è A e qualche C è B”,
“Tutti i C sono D”, Non tutti i B sono D e non tutti gli A sono D”.
Considerando A, B, C, D come insiemi estensione dei predicati,
rappresentare graficamente la situazione descritta dalle frasi
precedenti.
x A(x)  B(x)
x (A(x)  C(x))  x (B(x)  C(x))
x C(x) D(x)
 x (B(x) D(x))   x (A(x) D(x))
AB=
A  C  , B  C  
C D
B  D  , A  D  
D
C
A
B
Scrivere come formula della logica dei predicati la frase “Tutti
gli studenti che non sono matricole sono ammessi”, usando i
predicati unari s: ‘essere studente’, m: ‘essere matricola’,
a: ’essere ammesso’. Dimostrare che la frase è equivalente
alla frase “Non c’è alcuno studente non matricola che non è
ammesso”. Scrivere la frase in linguaggio insiemistico e farne
il diagramma di Venn. Come cambia la rappresentazione se si
considera che le matricole sono studenti?
La frase diventa y s(x)m(x) a(x)
Equivalente a y (s(x)m(x)) a(x), equivalente a
y s(x) m(x) a(x), equivalente a y (s(x) m(x) a(x)),
equivalente a y s(x) m(x)  a(x) cioè
“Non c’è alcuno studente non matricola che A
S
M
non è ammesso”.
SM A
A S
M
Ricordando che le matricole sono studenti