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=2m, 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 AB come AB, 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 xyz z=x+y, supponendo che parli di numeri interi, traduce la frase <dati due numeri esiste (sempre) la loro somma>. Che cosa vuol direxyz z/x= yz ? 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 AB 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 aP per intendere che a appartiene all’insieme P, e quindi verifica la proposizione atomica P(a); e scrivere bP 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 aP 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: BC se e solo se x xB x C B=C se e solo se x xB x C A = BC se e solo se x xA xB x C A = BC se e solo se x xA xB x C B=C se e solo se x xC xB Ed allora le dimostrazioni intuitive sulle figure fatte nel capitolo 4 diventano dimostrazioni formali. Ad esempio la formula di de Morgan (A B) = AB si dimostra formalmente x (A B) x (A B) (xA x B) xA x B xA x B x AB 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 cU. 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 AB AB 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 AB x (corre(x) studente(x)) x (studente(x) corre(x)) In termini insiemistici Corrono Studenti AB 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 AB AB 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 AB AB 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 AB e AB 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))) AB equival. AB y equival. y de Morgan AB equival. AB 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: 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 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 è PQ Ø 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 (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, 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 CD 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) SMA 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, CD = 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 MT b) Non tutti i mammiferi sono terrestri MT= MT MT c)Tutti i mammiferi non sono terrestri MT= MT d) Non ci sono solo mammiferi terrestri MT MT e) Esistono mammiferi non terrestri f) Non ci sono mammiferi terrestri MT MT= g) Esistono solo mammiferi terrestri MT MT h) Non tutti i mammiferi non sono terrestri i) Non ci sono mammiferi non terrestri MT MT= MT MT MT= 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) xy ama(x,y)