5. La logica dei predicati: sintassi e semantica

5. La logica dei predicati: sintassi e semantica
Il linguaggio della logica proposizionale è semplice ma poco espressivo: praticamente ogni teorema di
matematica vi appare nella forma A B. Per costruire una logica più espressiva occorre un linguaggio più
complesso.
Già la teoria degli insiemi ci ha abituato a distinguere tra gli individui e le loro proprietà (caratterizzate dagli
insiemi degli individui che condividono tali proprietà). Le nostre frasi in linguaggio naturale contengono infatti in
genere un soggetto e poi una serie di sue azioni o attributi: <Fido mangia la carne sul tappeto>, <Giovanni ama
Francesca>, <2 è il più piccolo numero pari>. La logica antica e medievale descriveva la frase come un soggetto,
una ‘sostanza’ (individuale, particolare o universale), + un predicato, un attributo della sostanza: ad esempio <la
neve è bianca> era interpretata come la neve+bianco, e aveva problemi ad esempio per le frasi complesse come
<Giovanni ama Francesca>. La logica matematica di Frege invece concepì la frase come centrata su un
‘predicato’ (l’azione o lo stato, normalmente espresso dal verbo) che aveva come argomenti il soggetto e i vari
complementi , ed introdusse una notazione funzionale (prefissa) per esprimerlo: esser_bianco (neve); così la
frase <Giovanni ama Francesca> diventava
ama (Giovanni, Francesca),
la frase <Fido mangia la carne
sul tappeto> diventava:
mangia(Fido, carne, tappeto),
e la frase <7 è maggiore di 2> diventava
>(7,2)
(Usiamo in genere la notazione prefissa ma è talora usata la più consueta notazione infissa: 7>2).
E’ questa la base della sintassi della logica dei predicati. Questa contempla quindi due tipi di oggetti: i predicati e
i termini individuali. La proposizione elementare o ‘atomica’ è data da un predicato con i suoi argomenti, come
negli esempi precedenti, e se un predicato richiede n argomenti il predicato si dirà n-ario. Ovviamente dentro la
logica dei predicati continua a valere tutta la logica delle proposizioni, in primo luogo i connettivi con le loro
proprietà. I termini individuali possono essere costanti individuali, ma anche variabili, come nella frase <x è
pari>, espresso dalla formula pari(x), ma ovviamente in questo caso il suo valore di verità dipende da x: è
vera ad esempio per x=4, falsa per x=7. In tal caso la variabile si dice libera. Infine un termine può essere
definito come funzione di uno o più altri termini (una funzione di n termini si dice n-aria), ad esempio <la madre
di Giovanni>, esprimibile come
madre(Giovanni),
oppure <3+5>, esprimibile come somma(3,5)
o,
ancora in notazione infissa, come
3+5.
Attenzione: purtroppo la notazione per tali termini composti tramite funzioni è la stessa già introdotta per le
proposizioni atomiche e questo potrebbe creare confusione, ma la differenza è chiara: una proposizione
atomica, in quanto proposizione, ha un valore di verità vero o falso (fisso o variabile), mentre un termine
composto con una funzione è un individuo, ed il contesto permette di distinguerli. Ad esempio in madre(Anna,
Giovanni),
madre è un predicato binario, e la proposizione è <Anna è la madre di Giovanni>, che può
essere vera o falsa, mentre in
madre(Giovanni),
madre è una funzione unaria, e il termine è <la madre
di Giovanni>, un individuo che non è né vero né falso. Non è una proposizione.
Appaiono nel calcolo dei predicati costrutti del tipo <per ogni> oppure <per tutti i> ed <esiste un>, detti
quantificatori, che nella logica antica caratterizzavano tipi diversi di proposizioni. Sono usualmente scritti come
(rispettivamente)  e , e sono seguiti da una variabile. In questo modo la frase (vera nell’interpretazione
standard) <esiste un numero pari> diventa la formula
x pari(x),
e la frase (falsa) <ogni numero è
maggiore di 4> diventa la formula
x x >4. Quando è consuetudinaria la notazione infissa la useremo,
sia per i predicati (ad esempio 7>2), che per le funzioni (ad esempio 3+5), ma altrimenti ci adegueremo alla
notazione prefissa. Da notare che quando le variabili sono così ‘quantificate’ la proposizione acquista un valore
di verità fisso e non più variabile: in tal caso le variabili sono dette saturate. La possibilità di essere ‘quantificate’
(con le relative proprietà) è l’unica differenza sintattica tra costanti e variabili.
La sintassi del la logica dei predicati è quindi una estensione di quella della logica delle proposizioni, ottenuta
aggiungendo alle proposizioni che già conosciamo le seguenti formule ben formate:
i)
ii)
iii)
Un predicato applicato ad argomenti costanti o variabili è una proposizione (proposizione o formula
atomica)
Un quantificatore applicato ad una proposizione è una proposizione, e la proposizione cui il
quantificatore è applicato si dice ‘campo d’azione’ (in inglese scope) del quantificatore.
Nient’altro è una proposizione.
Gli argomenti, detti in genere termini, possono essere costanti, variabili oppure termini complessi ottenuti
tramite funzioni o operazioni. Ad esempio 3+2 è un termine che si ottiene applicando l’operazione + ai termini 3
e 2. Importante distinguere tra predicati e funzioni, anche se indicati in maniera simile. Ad esempio posso scrive
5>7 ( o anche >(5,7)) e 3+4 (o anche +(3,4)). Ma la prima è una proposizione (infatti è falsa), mentre la seconda è
un termine, cioè un individuo, né vero né falso. La confusione tra questi due tipi di espressione è causa di
innumerevoli errori.
Anche qui le parentesi si usano per indicare l’ordine con cui si applicano connettivi e quantificatori in assenza di
una rappresentazione ad albero. E’ chiaro che questa estensione ci permette di analizzare la struttura interna di
una proposizione e di ottenere così un linguaggio abbastanza espressivo per fare matematica
Occorre fare una osservazione relativa al ‘significato’ dei termini, anche se stiamo ancora parlando di sintassi.
Quando scriviamo un predicato con ‘pari’, ‘>’, ‘maggiore’, ‘ama’, gli diamo il significato standard che hanno in
italiano. Questo a livello introduttivo è utile, ma occorre ricordare che hanno un significato standard solo le
‘primitive’, cioè connettivi e quantificatori, tutti gli altri segni sono ‘interpretabili’, ragion per cui ‘pari ()’ è solo
un predicato unario, e potrebbe significare ‘numero primo’, ‘maschio’, alto’, ‘curvo’, etc. I termini interpretabili
possono ricevere un significato o per un atto volontario dell’utente o anche tramite ‘definizioni’ che riducono il
significato di un termine al significato di altri termini cui si suppone dato già un significato. La definizione viene
data logicamente come un . Ad esempio per definire il predicato ‘numero pari’ posso scrivere
pari(n)
 m n=2m,
supponendo che i segni 2 e  abbiano già ricevuto il significato standard. Per l’uso
matematico si considera una primitiva logica anche il predicato binario =, vero se i due termini che connette
coincidono. Ad esempio 3+2=6 è vero se e solo se l’individuo ottenuto sommando 3 e 2 è proprio il 6 (nella
interpretazione standard è falso), padre(Michele)=Giovanni è vero se e solo se il padre di Michele è proprio
Giovanni.
Nel linguaggio della logica dei predicati un insieme è caratterizzato intensionalmente da una proprietà che i suoi
elementi devono soddisfare. Cioè P è l’insieme i cui elementi soddisfano il predicato P(x), e si scrive:
P = <x | P(x)>
Esiste anche un altro tipo di definizione che potremmo dire ricorsivo (o genetico), in cui un insieme è definito
tramite la descrizione del processo con cui tutti i suoi elementi possono essere generati. E’ qualcosa che
abbiamo già incontrato nei tutorials precedenti quando abbiamo descritto le grammatiche generative e la
sintassi della logica delle proposizioni e della logica dei predicati. Nell’esempio precedente di definizione del
numero pari una definizione ricorsiva potrebbe essere:
i)
ii)
iii)
0 è un numero pari
Se n è un numero pari allora n+2 è un numero pari
Nient’altro è un numero pari
Si potrebbe osservare che i quantificatori potrebbero essere sostituiti da  e: ad esempio se in una famiglia ci
sono Giovanni, Maria, Nicola, allora la frase <ogni membro della famiglia canta>, potrebbe essere scritta con la
formula
x canta (x),
canta(Giovanni)  canta(Maria)  canta(Nicola).
ma anche con
E analogamente la frase <c’è un membro della famiglia che suona> potrebbe essere scritta
x suona (x), ma
anche suona(Giovanni)  suona (Maria)  suona (Nicola).
Tuttavia questa scrittura diventerebbe molto
scomoda su insiemi molto grandi e impossibile su insiemi infiniti, comuni in matematica, come in x pari(x). I
quantificatori ci permettono cioè di usare la logica per ragionamenti di tipo ‘infinitario’. Tuttavia questa analogia
tra finito e infinito ci rende agevole estendere ai quantificatori le proprietà dei connettivi. Ad esempio le leggi di
de Morgan:
 (P  Q) equivale a  P  Q
diventano
x p(x)
equivale a x p(x)
 (P  Q) equivale a  P  Q
e
e
x p(x)
equivale a x p(x)
del resto evidenti: <non tutti gli studenti sono pugliesi> equivale a <esiste uno studente non pugliese>, <non
esiste uno studente biondo> equivale a <ogni studente non è biondo>
Il linguaggio della logica dei predicati si ritiene abbastanza espressivo da poter esprimere tutto ciò che si vuole
esprimere e che di norma si riesce ad esprimere col linguaggio naturale, viene detto cioè ‘semanticamente
universale’, ed in più si presume sia in grado di risolvere le ambiguità del linguaggio naturale. Ancora più
importante questa sottolineatura per l’uso di tale linguaggio in matematica. Tuttavia la ‘traduzione’ di frasi in
linguaggio naturale (o anche matematico) nel linguaggio della logica dei predicati non è sempre banale, non
esiste un algoritmo generale per effettuare tale traduzione, e, per realizzarla, occorre trovare una forma logica
per la frase trasformandola senza mutarne il significato.
In generale le frasi esistenziali sono del tipo <c’è un…> o <esiste un….> e la loro traduzione è abbastanza facile,
in genere la formula corrispondente inizia con x, ove x è l’individuo di cui si asserisce l’esistenza, seguito da una
congiunzione delle sue caratteristiche. Così la frase (vera) <esiste un numero pari primo> diventa x (pari(x) 
primo(x)).
Più complessa la traduzione di frasi universali introdotte da <(per, in, tra,…) tutti i…> o <(per,…)ogni…>. Qui si
usa il quantificatore x, con x individuo generico di cui si parla. Poi in genere segue una caratterizzazione di tale
individuo ed una asserzione di un suo attributo, ad esempio <tutti i cani abbaiano>. A questo punto occorre
ricordare che le variabili sono ‘mute’, non hanno cioè alcuna caratterizzazione sintattica ed al posto di x posso
usare y, z, t, etc. (ma la devo sostituire uniformemente dappertutto), e sono ‘vuote di significato’: x può essere
un numero, un essere vivente, uno studente, etc. Allora se voglio dargli una caratterizzazione la devo dare come
antecedente e il suo attributo diventa il conseguente: se voglio esprimere <ogni cane abbaia> scrivo x
(cane(x) abbaia(x)), cioè qualcosa del tipo <per ogni individuo, se è un cane allora abbaia>.
Queste sono i tipi di formule più semplici e diffuse, ma la varietà delle frasi è enorme, soprattutto se si usa
anche la negazione. Ad esempio una frase del tipo <nessuno…> di solito diventa x… … , così <nessuno
studente corre> diventa x studente (x)   corre(x), cioè <ogni studente non corre>, ma potrebbe anche
essere scritta come  x (studente(x)  corre(x)), cioè <non esiste uno studente che corre> .
L’equivalenza tra le due formule si può ottenere tramite le regole introdotte per l’azione di connettivi e
quantificatori. Nell’esempio precedente la prima formula, riscrivendo AB come AB, diventa: x
studente (x)   corre(x), che per le leggi di de Morgan diventa x (studente (x)  corre(x)). Usando a
questo punto la regola per la sequenza tra quantificatore e negazione otteniamo  x (studente (x)  corre(x)).
Complessa la concatenazione tra quantificatori. Un quantificatore esistenziale che segue quantificatori
universali relativi a certe variabili asserisce l’esistenza di un individuo che dipende da tali variabili: ad esempio
xyz z=x+y, supponendo che parli di numeri interi, traduce la frase <dati due numeri esiste (sempre) la loro
somma>. Che cosa vuol direxyz z/x= yz ? E’ vera se parliamo di numeri interi? Provate a considerare
quello che segue i quantificatori come una equazione in cui cerchiamo di determinare il valore della variabile
quantificata esistenzialmente y in funzione della variabile quantificata universalmente x per un parametro
generico z.
L’ordine dei quantificatori permette di disambiguare frasi che nel linguaggio naturale sono ambigue, come ad
esempio <ogni uomo ama una donna>. Qui sarebbero possibili due interpretazioni:
1. Per ogni uomo c’è un’anima gemella: la donna amata dipende dall’uomo considerato
2. Ogni uomo ama Marylin Monroe: la donna amata da tutti è una e la stessa.
Nel linguaggio della logica dei predicati la frase ha due traduzioni distinte in base all’ordine dei quantificatori:
1. x y uomo(x)  ama (x,y)) <per ogni uomo, esiste una donna che lui l’ama>
2. y x uomo(x)  ama (x,y)) <esiste una donna speciale che ogni uomo ama>
L’aspetto essenziale che differenzia le due formule è l’ordine tra i due quantificatori: nella prima  precede ,
nella seconda accade il viceversa. Nella seconda interpretazione potremmo denotare la donna con una costante,
Marylin, e eliminare il quantificatore esistenziale, scrivendo
donna(Marylin) x uomo(x)  ama (x,Marylin)
Nella prima la donna amata da x è una funzione di x e potremmo chiamarla anima_gemella(x) e scrivere
x uomo(x)  donna(anima_gemella(x))  ama (x, anima_gemella(x))
Da notare che donna(_), uomo(_) sono predicati unari, ama(_,_) è predicato binario, anima_gemella(_) è
funzione unaria, Marylin è una costante, e le costanti sono considerate come funzioni 0-arie, poiché non
dipendono da nessun termine.
Spesso in matematica vedrete usati altri segni, che tuttavia non sono primitive: in logica è meglio sostituirli con
formule della logica dei predicati, ma in matematica si possono usare. Ad esempio si usa il simbolo |y p(y) per
esprimere la frase <esiste uno e un solo individuo che verifica p>, ad esempio <esiste uno e un solo numero pari
primo>. In logica invece la frase dovrebbe essere espressa da y p(y)  (x p(x)  x=y), cioè <esiste un
individuo che verifica p e, se ne esiste un altro che verifica p, allora i due individui coincidono>.
Ogni formula ben formata può essere scritta in forma di clausola, cioè nella forma C1 C2 …. Cn, laddove
ciascun Ci è una clausola, cioè una disgiunzione di letterali, ove un letterale è una forma atomica o la negazione
di una forma atomica: A1 A2… An B1 B2 … Bm.
La trasformazione di una fbf in una forma di clausola si effettua con un facile algoritmo, dopo aver trasformato
le implicazioni AB in A B :
1) 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)
2) Il quantificatore esistenziale viene eliminato tramite la ‘skolemizzazione’:
se nessun  lo precede:
x p(x)  p(c) ove ‘c’ è una ‘costante nuova’, cioè che non compare già
nella fbf (come ‘Marylin’ nell’esempio precedente)
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, cioè che non compare già nella fbf (come ‘anima_gemella’ nell’esempio
precedente.
x1 x2 … xn
3) Tutti i quantificatori universali vengono posti in cima all’albero.
4) Si applica la distributività nella trasformazione
A  (B C)  (A B)  (A C)
A1


A2 … An
SEMANTICA DELLA LOGICA DEI PREDICATI



B1
 …… 
 ….. 
B2
Bm
E’ abbastanza facile intuire come la teoria degli insiemi possa essere usata per esprimere una semantica
estensionale della logica dei predicati, estendendo il suo uso nella logica delle proposizioni: è sufficiente
introdurre in essa i simboli e , e scrivere aP per intendere che a appartiene all’insieme P, e quindi verifica
la proposizione atomica P(a); e scrivere bP per intendere che b non appartiene all’insieme P, e quindi verifica
la proposizione P(b).
a
b
P
b
a
P
In altri termini
aP  P(a). D’altra parte si può definire l’insieme P come formato dagli x che verificano P,
scrivendo P = <x | P(x)>. Queste due espressioni sono proprio il nucleo della semantica della logica dei
predicati. Un insieme può essere descritto elencando gli elementi: <+, - ,:,>, in maniera solo intuitiva anche
infiniti <1, 2, 3, 4, …., n, ….>. Gli insiemi non hanno un ordine naturale, e quindi le coppie <0,1>=<1,0>; se si
vuole distinguerli si parla di “coppie ordinate” o “sequenze” se gli elementi sono più di 2 e si indicano in genere
con parentesi tonde (0,1)≠ (1,0)
In questa semantica estensionale xP(x) significa che l’insieme P contiene tutti gli individui di cui si sta parlando
(l’”universo del discorso”), mentre xP(x) significa che l’insieme P contiene almeno un individuo dell’universo
del discorso, e quindi non è vuoto.
Viceversa, se aggiungiamo il segno  al linguaggio della logica dei predicati possiamo costruire la teoria degli
insiemi come teoria formale, cioè sostituire il ragionamento intuitivo sugli insiemi del capitolo precedente (palle
e intervalli)in una teoria puramente logica. Di conseguenza possiamo scrivere:
BC se e solo se x xB  x C
B=C se e solo se x xB  x C
A = BC se e solo se x xA  xB  x C
A = BC se e solo se x xA  xB  x C
B=C
se e solo se x xC  xB
Ed allora le dimostrazioni intuitive sulle figure fatte nel capitolo 4 diventano dimostrazioni formali. Ad esempio
la formula di de Morgan (A  B) = AB si dimostra formalmente
x  (A B)  x  (A B)  (xA  x B)  xA  x B  xA  x B  x  AB
Il principio ispiratore della semantica estensionale è la corrispondenza tra proprietà e loro estensione. Più in
generale l’interpretazione di una formula parte scegliendo l’universo del discorso, cioè l’insieme U degli individui
di cui la formula parla: numeri, clienti di una banca, studenti di icd. Poi si interpretano i termini costanti c come
individui cU. Analogamente i predicati vengono interpretati come sottoinsiemi di U (se predicati unari), o
come relazioni n-arie su U (se predicati n-ari), e i simboli di funzioni n-arie come funzioni n-arie su U.
Supponiamo data ad esempio la formula x y f(x,y)=c.
In questa formula sono primitive , ,,=, il cui significato è quindi già dato. Le variabili sono vuote di
significato, restano quindi da interpretare la costante c, il predicato binario p, e la funzione binaria f.
Scegliamo come universo del discorso l’insieme  privato dello 0. Se interpretiamo la c come il numero 1, la f
come la funzione binaria ‘prodotto’, la formula viene interpretata come la frase <per ogni numero ne esiste un
altro tale che il loro prodotto vale 1>, e in questa interpretazione la formula è vera.
Possiamo cambiare universo del discorso e prendere a tal fine gli studenti di informatica. Sia c lo studente
Nicola, e f la funzione ‘colui che sta in mezzo tra’, allora la formula diventa <per ogni studente ce n’è un altro
tale che Nicola sta in mezzo a loro>, probabilmente falsa.
ESERCIZI
1. Traduci come formula ben formata della logica dei predicati le seguenti frasi:
a) <Ognuno ama suo padre>
b) <Ognuno ama qualcuno>
c) <Ognuno ama chi lo ama>
d) <Nessuno ama chi ama se stesso>
e) <C’è chi non ama nessun altro>
f) <C’è chi ama solo se stesso>
2. Confronta le frasi <tutti gli uomini sono mortali>, <nessun uomo è mortale>, <esistono uomini mortali>,
<ci sono uomini immortali>, <ogni uomo è immortale>, <qualche mortale è uomo>, <non tutti i mortali
sono uomini>, <gli unici immortali sono gli uomini>. Quali sono fra loro equivalenti? Interpretale in
linguaggio insiemistico.
3. Traduci in linguaggio italiano la formula, trasformala in proposizioni equivalenti e traduci in linguaggio
insiemistico:
a) x (studente (x)  tifoso(x))
b) x (studente (x)  corre(x)).
4. Scrivi come formula la frase {esiste il numero minimo}. Considera come universo del discorso i diversi
domini numerici, usa con il suo significato abituale il predicato binario < e il predicato unario numero. In
quali domini la formula è soddisfatta?
5. Scrivi la formula corrispondente alla proposizione matematica <se un numero è primo e diverso da 2
allora è dispari>, usando i predicati unari ‘numero’, ‘primo’, ‘pari’.
“dati due numeri, uno maggiore dell’altro, esiste sempre un numero compreso fra di essi” , usando
anche il predicato binario ‘maggiore’. I due numeri possono coincidere?
6. Dimostra formalmente le proprietà distributive tra  e .
La distinzione tra intensione ed estensione permette anche di comprendere le ragioni di alcune ambiguità nel
linguaggio naturale che appaiono quando non si distingue linguaggio logico e linguaggio insiemistico. Si
considerino ad esempio le due frasi: <il difensore centrale deve essere alto e veloce>, <salgono prima sulle
scialuppe donne e bambini>. In entrambe appare la congiunzione ‘e’, ma nel primo caso si richiede che il
difensore sia nel contempo alto e veloce, nel secondo caso non si parla di bambine, ma di persone che siano o
donne o bambini. Nel primo caso la congiunzione ‘e’ funziona come un and. nel secondo caso come un or.
Perchè? Evidentemente nel primo caso parliamo intensionalmente, ‘alto’ e ‘veloce’ sono aggettivi, attributi
entrambi necessari del difensore, mentre nel secondo caso parliamo estensionalmente delle ‘donne’ e dei
‘bambini’, usati come sostantivi, insiemi di persone la cui unione costituisce l’insieme di coloro che hanno
precedenza. L’incongruenza si spiega osservando che nel primo caso parliamo di proprietà e quindi usiamo un
linguaggio logico in cui la congiunzione è un ‘and’, nel secondo caso parliamo di individui e quindi usiamo un
linguaggio insiemistico in cui la congiunzione è una unione, che corrisponde logicamente ad un ‘or’. A livello
grammaticale questo si nota nel fatto che ‘alto’ e ‘forte’ sono attributi, ‘donne’ e ‘bambini’ sono sostantivi.
PROBLEMI SVOLTI
1. Dimostrare l’equivalenza delle seguenti coppie di proposizioni, e darne una rappresentazione
insiemistica
1.1 <non ogni studente corre>, <ci sono studenti che non corrono>
La traduzione immediata delle due frasi è
x (studente(x) corre(x))
x (studente(x)  corre(x))
Trasformiamo la prima: x  (studente(x) corre(x))
In termini insiemistici
per la regola x
x 
x  ( studente(x)  corre(x))
per la regola AB
AB
x (studente(x)  corre(x))
per la legge di de Morgan
Studenti ∩ Corrono ≠ 
1.2 <corrono solo studenti>, <non c’è nessuno che corre e non è studente>
La traduzione immediata delle due frasi è
x (corre(x)  studente(x))
 x (studente(x)  corre(x))
Trasformiamo la prima:x (corre(x)  studente(x))
per la regola AB
x (corre(x)  studente(x))
 x (studente(x)  corre(x))
In termini insiemistici
Corrono  Studenti
AB
per la legge di de Morgan
per la regola x
o anche
x 
Studenti ∩ Corrono = 
2. 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 si ottiene la seconda coi seguenti passagg
x  (primo(x)  y primo(y)  x≥y)
per la regola x
x 
x ( primo(x)   y ( primo(y)  x≥y)) per de Morgan e la regola AB
AB
x ( primo(x)  x  ( primo(y)  x≥y))
per la regola x
x 
x ( primo(x)  x ( primo(y)   x≥y)) da cui la seconda formula per la regola
AB
 AB
3. Scrivere come formula la frase <chi ha un amico è fortunato>.
x (y amico (x,y))  fortunato (x))
a) Trasforma le seguenti frasi: <esiste qualcuno che ha un amico e non è fortunato>, <non tutti
coloro che hanno un amico sono fortunati> in formule del calcolo dei predicati, usando i predicati
‘essere amico’ (binario) ed ‘essere fortunato’ (unario).
x (y amico (x,y)   fortunato (x))
 x (y amico (x,y))  fortunato (x))
b) Mostra che sono equivalenti.
Dalla seconda:  x ((y amico (x,y))  fortunato (x))
x  ((y amico (x,y))  fortunato (x))
x (y amico (x,y)   fortunato (x))
per l’equiv. tra AB e AB
per l’equiv. tra  x e x 
per de Morgan
4. A) Scrivere come formula del calcolo dei predicati la frase: “Esiste ed è un numero il quadrato
di ogni numero”, usando il predicato unario ‘numero’ e il predicato binario ‘quadrato’
(quadrato(a,b) significa che ‘a è il quadrato di b’).
B) Scrivere come frase la formula: x (numero(x)  y (quadrato(y,x)   numero(y))).
C) le due formule precedenti sono equivalenti?
A) x numero(x)  y (numero(y)  quadrato(y,x))
B) “non esiste un numero il cui quadrato non sia un numero”
C) x numero(x)  y (numero(y)  quadrato(y,x))
x numero(x)  y (numero(y)  quadrato(y,x))
x numero(x)  y  (numero(y)  quadrato(y,x))
x numero(x)  y (numero(y)  quadrato(y,x))
x numero(x)  y (quadrato(y,x)   numero(y))
x (numero(x)  y (quadrato(y,x)   numero(y)))
  x (numero(x)  y (quadrato(y,x)   numero(y)))
AB equival. AB
y  equival. y
de Morgan
AB equival. AB
de Morgan
y  equival. y
5. 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).
b) dimostrare che le due formule sono equivalenti
a) 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)  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)
7. a) Scrivere come formula del calcolo dei predicati la seguente proposizione:
Non tutti i numeri hanno un numero inverso
usando i predicati
numero: predicato unario,
inverso: predicato binario
x (n(x)  y (n(y)  inv(y,x))
b) dimostrare che è equivalente alla proposizione
Esiste almeno un numero tale che nessun numero è il suo inverso
x (n(x)  y (n(y)  inv(y,x))
x (n(x)  y (n(y)  inv(y,x))
x (n(x)  y  (n(y)  inv(y,x))
x (n(x)  y  n(y)  inv(y,x))
x (n(x)  y n(y)  inv(y,x))
c) interpretando l’inverso come ‘inverso moltiplicativo’ tali proposizioni sono soddisfatte o no, nei
numeri interi/ nei numeri razionali (con o senza lo 0)/ nei numeri reali (con o senza lo 0)?
Sono soddisfatte nei numeri interi, nei numeri razionali con lo 0, nei numeri reali con lo 0.
Non sono soddisfatte nei numeri razionali senza lo 0, nei numeri reali senza lo 0.
8. Tramite il predicato binario ‘genitore’ si possono definire tutte le relazioni di parentela.
a) Definisci i predicati binari ‘nonno’, ‘fratello’, ‘cugino’.
nonno(a,b)  x genitore(a,x)  genitore(x,b)
fratello(a,b)  x genitore(x,a)  genitore(x,b)
cugino(a,b)  x y z genitore(x,y)  genitore(x,z)  genitore(y,a)  genitore(z,b)
b) Scrivi la proposizione relativa alla frase <se Giuseppe è cugino del genitore di Antonio, allora
Giuseppe e Antonio hanno un nonno in comune>, usando il predicato binario ‘genitore’.
t cugino(G,t)  genitore(t,A)  s nonno(s,G)  nonno(s,A)
Sostituendo
t x y z genitore(x,y)  genitore(x,z)  genitore(y,G)  genitore(z,t)
 genitore(t,A)  s( w genitore(s,w)  genitore(s,G)  r genitore(s,r)  genitore(r,A))
9. 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)
0
0
1
1
0
1
0
1
0
0
0
1
A  (A  B)  A (A  B) A  (A  B) A  (A  B)  A
0
0
1
1
1
1
1
1
0
1
1
1
0
0
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 e A  A B, da cui la tesi.
Analogamente per l’altra espressione.
10. 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 del calcolo di predicati la cui interpretazione insiemistica è
PQ  Ø
x ( p(x)  q(x))
11. 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))
12. Scrivere come formula della logica dei predicati la frase <solo chi segue il corso, lo capisce>, usando i
predicati binari capire e seguire e la costante il-corso.
x capire(x,il-corso) seguire(x,il-corso)
13.
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, e usare come
universo del discorso , e -{0}. In quali di queste interpretazioni la
formula è soddisfatta, e perchè?
Se l’universo del discorso è -{0} la formula è soddisfatta,
l’interpretazione più ovvia si ha interpretando f(y)= c y-1 e c=1 (ma
andrebbe bene ogni valore di c): Infatti lo 0 è l’unico elemento di  che
non ammette inverso. Se invece l‘universo è  questa interpretazione
non la soddisfa ma la formula viene soddisfatta da c=0 e f(y)=0.
14.
Usando i predicati unari ‘studente’ e ‘miope’
a) Scrivi come formula della logica dei predicati la frase <non c’è
nessuno studente miope>
 x (studente(x)  miope(x))
b) Dimostra che è equivalente alle frasi <tutti gli studenti non sono
miopi> e <tutti i miopi non sono studenti>
 x (studente(x)  miope(x))
equivalente a x
 (studente(x)  miope(x))
equivalente a
x ( studente(x)   miope(x))
equivalente a
x (studente(x)   miope(x))
ea
x (miope(x)   studente(x))
c) Danne la rappresentazione insiemistica
Studente  Miope = 
15. Tradurre nella logica dei predicati le frasi: “ogni studente ha qualche amico che ha seguito
tutti i corsi”, e “c’è qualche studente che per ogni corso ha qualche amico che lo ha seguito”,
usando i predicati unari studente(_) e corso (_), e i predicati binari amico(_,_) e seguire(_,_).
Skolemizzare le formule.
x studente(x) (y amico(x,y)  z corso(z)seguire(y,z))
Skolemizzare: x studente(x)  amico(x,f(x))  z corso(z)seguire(f(x),z))
x studente(x)  (z corso(z) y amico(x,y)  seguire(y,z))
Skolemizzare: studente(c)  (z corso(z) amico(c,f(z))  seguire(f(z),z))
16. 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” .
b) Considerando A, B, C, D come insiemi estensione dei predicati, rappresentare
graficamente la situazione descritta dalle frasi precedenti.
D
a) x A(x)  B(x)
x (A(x)  C(x))  x (B(x)  C(x))
C
x C(x)  D(x)
 x (B(x)  D(x))   x (A(x)  D(x))
A
B
b) A  B = 
A  C  , B  C  
CD
B  D  , A  D  
17. Scrivere come formula del calcolo dei predicati la frase: “Tutti gli studenti tranne le matricole
sono ammessi”, usando i predicati unari s: ‘essere studente’, m: ‘essere matricola’, a: ’essere
ammesso’.
a) Dimostrare che la frase è equivalente alla frase “Non c’è alcuno studente non matricola
che non è ammesso”.
b) Scrivere la frase in linguaggio insiemistico e farne il diagramma di Venn (oppure
rappresentarla usando intervalli).
c) Come cambia la rappresentazione se si considera che le matricole sono un sottoinsieme
degli studenti?
La frase diventa y s(x)m(x)  a(x)
a) 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 non è ammesso”.
b) SMA
A
c)
A
S
S
M
M
18. a. Scrivere come formula della logica dei predicati la frase “gli studenti che
superano algebra e analisi si iscrivono al III anno, quelli che superano algebra
ma non analisi al II anno, e quelli che non superano algebra al I anno”,
supponendo che ogni studente si iscrive ad uno e un solo anno [usa cinque
predicati unari: ‘superare algebra’, ‘superare analisi’,
‘iscriversi al I anno’, ‘iscriversi al II anno’, ‘iscriversi al III anno’].
Indichiamo con Al(_), An(_), I(_), II(_), III(_) i cinque predicati unari. Supponendo
che ogni studente si iscrive ad uno e un solo anno, la frase diventa x [III(x) 
(Al(x)  An(x))]  [II(x)  (Al(x)  An(x)) ]  [I(x) 
Al(x)]. Senza la supposizione i  diventano .
b. Dai una rappresentazione insiemistica del problema. Hai a che fare con delle
partizioni?
La rappresentazione insiemistica rispetto al superamento degli esami è:
Al
An
A
II
B
III
C
D
I
Che può essere considerata una partizione in 4 insiemi A, B, C, D, ove A è
l’estensione di Al(x)  An(x), B l’estensione di Al(x)  An(x), C l’estensione di An(x)
 Al(x), D l’estensione di (Al(x)  An(x)).
Da questa partizione si ricava quella per gli anni di iscrizione A = II, B = III,
CD = I nella supposizione che ogni studente si iscrive ad uno e un solo anno
(in caso contrario le estensioni sono quelle tratteggiate).
c. Gli studenti che hanno superato un solo esame sono 40, gli esami superati in
totale sono 52, in 30 hanno superato algebra, gli iscritti al I anno sono 30.
Quanti studenti non hanno superato alcun esame?
|A| + |C| = 40, |A| + |C| + 2 |B|= 52, |A| + |B| = 30. Da cui |B| = 6,
|A|= 24, |C| = 16. Nella supposizione che ogni studente si iscrive ad uno e un
solo anno |C|+|D| = 30, da cui |D|=14.
d. Come cambia il problema se gli studenti possono anche non iscriversi a nessun
anno?
Non si può calcolare quanti studenti si sono iscritti a II e III anno e quanti non abbiano
superato alcun esame, ma il loro numero è, rispetto al caso precedente, minore o
uguale per II e III, maggiore o uguale per coloro che non hanno superato alcun esame
19. Scrivere le seguenti frasi come formule del calcolo dei predicati, mostrare quali sono
equivalenti e darne una rappresentazione insiemistica:
a)Tutti i mammiferi sono terrestri
MT
b) Non tutti i mammiferi sono terrestri
MT=
MT
MT
c)Tutti i mammiferi non sono terrestri
MT=
MT
d) Non ci sono solo mammiferi terrestri
MT
MT
e) Esistono mammiferi non terrestri
f) Non ci sono mammiferi terrestri
MT
MT=
g) Esistono solo mammiferi terrestri
MT
MT
h) Non tutti i mammiferi non sono terrestri
i) Non ci sono mammiferi non terrestri
MT
MT=
MT
MT
MT=
20. Usando le costanti ‘gianni’ e ‘nico’, il predicato binario ‘ama’ e il predicato unario
‘studente’ tradurre in linguaggio naturale le formule
a. x ama(gianni,x)  x ama(nico,x)
b. x (ama(gianni,x)  ama(nico,x)) E
tradurre in formule le frasi:
c. “c’è uno studente che non è amato da alcuno studente”
d. “ogni studente ama qualche altro studente che non lo ama”
a) Se gianni ama tutti lo fa anche nico
b) Nico ama tutti coloro che gianni ama
c) x studente(x) y studente(y) ama(y,x)
d) y studente(y) x studente(x)  xy  ama(x,y)