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