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 • AB 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 AB equivalente a AB • 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 AB equivalente a AB 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è xy p(x,y) è equivalente a yx p(x,y) e x y p(x,y) è equivalente a yx p(x,y). Ma la commutatività non vale per quantificatori diversi: x y p(x,y) non è equivalente a yx 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 yx (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 AB • Il si trasferisce sulle formule atomiche scendendo lungo l’albero tramite le trasformazioni: P P • (PQ) PQ (PQ) PQ • 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=2y, 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)}, xP 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: aP bP 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 (xy = yx) z x xz = zx = x • b) skolemizzare la formula: x y z yz=zy=x, • y yf(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: • AB se e solo se x xA xB. • A=B se e solo se x xA xB. • C=AB ove xC (xA)(xB) • C=AB ove xC (xA)(xB) • B=A se e solo se x xA xB. • Le proprietà insiemistiche viste in precedenza in modo intuitivo possono ora essere dimostrate rigorosamente. Ad esempio la legge di de Morgan: AB = AB si dimostra così logicamente: x(AB) x(AB) (xAxB) xA xB xA xB x AB • 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 AB, AC, BC ? Verifica che A( BC) = (AB)(AC) Dimostralo per A, B, C qualsiasi. AB = {(rosso,2), (rosso,3), (rosso,5), (verde,2), (verde,3), (verde,5)} AC = {(rosso,5), (rosso,7), (verde,5), (verde,7)} BC = {5} A( BC) = { (rosso,5), (verde,5)} = (AB)(AC) Due insiemi sono uguali se hanno gli stessi elementi. Essendo prodotti cartesiani di due insiemi gli elementi sono coppie (x,y). (x,y) A( BC) sse xA y( BC) sse xA y B y C (x,y) (AB)(AC) sse (x,y) (AB) (x,y) (AC) (yB) (xA) (yC) sse xA y B y C. sse (xA) 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: xA se e solo se x A (A B). Per la proprietà distributiva xA se e solo se x (A A) (A B). Ma A A = A da cui xA 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 è PQ Ø 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)) AB= 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”. SM A A S M Ricordando che le matricole sono studenti