Logica Matematica Corso A Corso di Laurea in Informatica Anno 2002-03 Indice 1 Indice i Introduzione 1 2 Dal linguaggio naturale alla logica 2.1 Esercizi 3 Logica proposizionale 3.1 Connettivi 3.2 Sintassi 3.2.1 Il linguaggio proposizionale 3.2.2 Analisi sintattica 3.2.3 Esercizi 3.3 Semantica 3.3.1 Tavole di verità 3.3.2 Esercizi 3.3.3 Validità e conseguenza 3.3.4 Esercizi 3.4 Sull0 implicazione 10 10 10 11 13 20 22 23 26 26 31 33 4 Insiemi e algebre di Boole 4.1 Variabili 4.2 Algebra degli insiemi 4.3 Algebre di Boole 4.3.1 Esercizi 4.4 Algebra delle proposizioni 4.5 Rapporti tra proposizioni e insiemi 36 36 37 47 49 50 56 i 3 7 5 Relazioni 5.1 Prodotto cartesiano 5.2 Relazioni 5.2.1 Esercizi 5.3 Relazioni d0 ordine 5.4 Relazioni di equivalenza 5.5 Funzioni 60 60 61 64 65 69 71 6 Forme normali 6.1 Definibilità dei connettivi 6.1.1 Esercizi 6.2 Forme normali disgiuntive 6.3 Forme normali congiuntive 6.4 Esercizi 75 75 77 77 79 83 7 Dimostrazioni 7.1 Dimostrazioni dirette 7.2 Distinzione di casi 7.3 Sillogismo disgiuntivo 7.4 Contrapposizione e M odus tollens 7.5 Dimostrazioni per assurdo 7.6 Dimostrazioni in avanti e all0 indietro 86 86 90 93 95 96 102 8 Alberi di refutazione 8.1 Il metodo 8.2 Correttezza e completezza 8.3 Forme normali 8.4 Esercizi 104 104 110 114 115 9 10 Variabili e quantificatori Linguaggi predicativi 10.1 Alfabeto 10.2 Termini e formule 10.3 Variabili libere e vincolate 10.4 Interpretazioni 10.5 Sui quantificatori ristretti 10.6 Esercizi ii 117 122 122 123 131 134 137 138 11 12 Leggi logiche 11.1 Esercizi 140 147 Quantificatori e dimostrazioni 148 13 Sillogismi 13.1 Sillogismi categorici 13.2 Diagrammi di Venn 157 158 167 14 Alberi di refutazione 14.1 Regole per i quantificatori 14.1.1 Esercizi 14.3 Applicazione ai sillogismi 172 172 178 178 15 Il principio di induzione 15.1 I numeri naturali 15.2 Il principio di induzione 15.3 L0 induzione empirica 15.4 Il ragionamento induttivo 15.5 Esercizi 15.6 Definizioni ricorsive 15.6.1 Esercizi 15.7 Il principio del minimo 15.8 Varianti dell0 induzione 15.9 Errori e paradossi 15.10 Definizioni induttive 15.10.1 Esercizi 183 183 186 192 195 198 201 207 209 216 221 222 230 iii 1 Introduzione Lo scopo di questo corso è quello di rendere familiari con le forme di ragionamento tipiche degli argomenti matematici; in informatica in particolare interessano soprattutto quelli che mirano a trovare la soluzione di un problema, a dimostrare che è una soluzione e a presentarla come un algoritmo. Un algoritmo è un insieme articolato e connesso di istruzioni per risolvere un problema; gli algoritmi non sono scritti in un linguaggio di programmazione, ma inizialmente nel linguaggio matematico o addirittura in quello naturale, e in questo devono essere formulati e riconosciuti tali, prima che la loro descrizione guidi alla traduzione nei relativi programmi. La maggior parte degli algoritmi che sostengono le prestazioni dei calcoltori non sono numerici ma riguardano manipolazioni di simboli (ad esempio l’ordinamento di una lista, o la fusione di due liste in una), quindi la prima consapevolezza - e competenza - da acquisire è che il linguaggio matematico non è solo quello dei numeri, ma abbraccia qualsiasi argomento che si possa riferire ad elementi strutturati. I ragionamenti relativi devono avere ed hanno lo stesso rigore di quelli numerici, e si svolgono con l’ausilio di un simbolismo appropriato, che è quello della logica matematica (= logica formale moderna). In vista della precisione richiesta, che non ammette licenze né eccezioni, è bene realizzare che ogni ragionamento si può rappresentare in forme standardizzate di passaggi, e imparare a farlo, usando regole logiche e la proprietà fondamentale dei numeri naturali che è il principio di induzione. Il corso è l’equivalente di quelli che nelle università americane si chiamano di Introduction to Proofs, che contengono in genere anche elementi di matematica discreta (strutture finite, combinatoria). Tali corsi sono concepiti come ponte tra la scuola secondaria e il college, rivolti a studenti che hanno appreso la matematica come un insieme di ricette e di calcoli, senza aver mai imparato a seguire e tanto meno a fare una dimostrazione. Nella scuola italiana qualche esperienza con le dimostrazioni si acquisisce con la geometria, ma limitatamente alle sue costruzioni e senza approfondire le ragioni di tale forma di ragionamento tipicamente matematica. Né tale problema sarà indagato in questo corso introduttivo: lo studio delle dimostrazioni e l’obiettivo della familiarità con esse sono perseguiti non in vista di spiegare il senso dell’impostazione deduttiva delle teorie, ma solo per abituare a vedere le connessioni tra i vari risultati, la loro mutua dipendenza e derivabilità, il che aiuta anche a ricordarli meglio. 1 Scrivere dimostrazioni presuppone comunque la comprensione degli argomenti trattati, e costituisce quindi un’occasione di ripasso di nozioni elementari di aritmetica che sono alla base del pensiero informatico. Nel testo, il segno !!! a margine segnala che si deve prestare particolare attenzione. !!! I riferimenti in nota del tipo “Horstmann, p. 186” rimandano al testo del corso di Programmazione C. S. Horstmann, Java 2 . Le parti scritte in corpo minore sono letture con informazioni integrative. Il segno 2 è usato per indicare la fine di una dimostrazione, al posto del tradizionale QED. 2 2 Dal linguaggio naturale alla logica La prima competenza che bisogna acquisire è quella della formalizzazione, ovvero della traduzione di frasi della lingua naturale, o del gergo matematico - misto di formule e di parole - in espressioni di un linguaggio semplificato e dalla sintassi precisa. La semplificazione è guidata dalla volontà di restringersi ad espressioni matematiche o comunque di carattere logico. Non si considerano quindi frasi con indicatori di tempo e luogo (tempi dei verbi, avverbi di tempo, luogo e modo). Non si considerano espressioni di comando o di interrogazione, ma solo frasi dichiarative. Ci si riduce, come primo livello di semplificazione, a frasi elementari che esprimono fatti, e a loro combinazioni mediante particelle logiche. Le particelle logiche della lingua italiana sono parole come “e”, “oppure”, “se” e altre, che collegano frasi di senso compiuto. Nella lingua italiana queste parole da una parte sono polivalenti e ambigue, hanno diversi sensi - in generale discriminati dal contesto - e dall’altra si presentano in tante versioni equivalenti. La congiunzione “e” può ad esempio essere resa da una virgola, da “e anche”, da “ma” e altre espressioni. Il senso avversativo di “ma” è uno degli aspetti che vengono lasciati cadere nel passaggio ad un linguaggio formalizzato, in quanto esprime un’aspettativa soggettiva. La congiunzione è resa anche da costrutti più complicati, come “sia . . . sia”: “vado sia che piova sia che faccia bel tempo” significa “se fa bel tempo vado, e se piove vado”, magari con l’aggiunta di un “ugualmente” che di nuovo esprime una determinazione soggettiva. La stessa congiunzione talvolta esprime qualcosa di più o di diverso dalla semplice affermazione di entrambe le proposizioni congiunte; talvolta può significare “e poi”, come in “si sposarono e vissero felici”; talvolta significa “e quindi, come in ”si immerge una cartina di tornasole, e diventa rossa” (se questa frase è intesa non come una descrizione di avvenimenti, nel qual caso “e” significa “e dopo”, ma come come una caratterizzazione di particolari sostanze). La disgiunzione, “o” o “oppure”, talvolta ha un senso debole (“A o B o tutt’e due”), talvolta un senso esclusivo (“A o B ma non tutt’e due”). L’affermazione “piove o c’è il sole” è compatibile con la situazione in cui piove da una nuvola anche se c’è il sole. Il latino aveva due parole diverse “vel” e “aut”, ma la distinzione non è rimasta nelle lingue moderne. La 3 differenza non sempre è espressa dalla semplice ripetizione di “o” (“o A o B”) ma più spesso dall’enfasi della pronuncia; il tono e il contesto devono essere tenuti presenti per capire il significato inteso. C’è voluto del tempo per tornare a riconoscere due particelle diverse: Alcuni dicono che per la verità di una disgiunzione si richiede sempre che uno dei disgiunti sia falso, perché se entrambi fossero veri non sarebbe una vera disgiunzione, come dice Boezio. Questo però non mi piace. In realtà io dico che se entrambe le parti di una disgiunzione sono vere, l’intera disgiunzione è vera (Walter Burleigh, De Puritate, XCI, 3-19, XIV sec .) La disgiunzione in italiano talvolta è resa con “ovvero”, ma questa parola significa anche “cioè”, “vale a dire”. Qualche volta la stessa frase può essere espressa sia con la “e” che con la “o”. Si può dire equivalentemente sia “Tutti, bianchi o neri, hanno un’anima”, sia “Tutti, bianchi e neri hanno un’anaima”. L’affermazione “mele e pere sono frutti” vuole anche dire che “se si prende una mela o una pera, si ha un frutto”. La negazione di una frase si realizza in diversi modi, di solito con la particella “non”, inserita però (o soppressa) in vari modi nella frase da negare, con diversi costrutti che coinvolgono altre parole, in particolare i verbi. Da “piove” a “non piove”, o “non è vero che piove”; da “qualche volta piove” a “non piove mai”; da “piove sempre” a “qualche volta non piove”; da “non ama nessuno” a “ama qualcuno”, da “è bello” a “è brutto”, e cosı̀ via. Per negare “non piove” non si dice “non non piove” ma “piove” o “non è vero che non piove”. La parola “se” è un’altra particella dai molteplici sensi, e dalle molteplici rese, ad esempio con “B, se A”, “A solo se B”, “se A allora B”, “A implica !!! B, “A, quindi B” - ma “quindi” ha anche un significato temporale, come “poi”. Quando si afferma “se A allora B”, A è detta condizione sufficiente per B, e B condizione necessaria per A. “A è condizione sufficiente per B” è un altro modo di esprimere “se A allora B”. Al “se . . . allora” sarà dedicata una discussione speciale per la sua importanza rispetto all’inferenza logica. In considerazione di queste ambiguità e molteplicità di espressione, un primo passo è quello di introdurre una sola versione fissa delle particelle 4 logiche, sia come simboli che come significati; fatto questo tuttavia, la competenza più importante consiste poi nel saper tradurre le frasi della lingua naturale, disambiguandole quando necessario e possibile, e trovando la versione formale corrispondente. Tale standardizzazione è necessaria per poter comunicare con le macchine; ma prima di parlare alle macchine occorre parlare ad altre persone e a se stessi per costruire gli algoritmi. Nell’apprendere a formalizzare si deve anche raffinare la propria logica naturale. Tuttavia non esiste un elenco completo di quelle che nei linguaggi naturali si riconoscono come particelle logiche. Non abbiamo menzionato ad esempio “né . . . né”, o “a meno che”1 . Qualche volta, parole che non sembrano particelle logiche possono essere usate in questo modo, e lo si riconosce nella formalizzazione: “quando” è di solito una determinazione temporale, ma “quando piove, prendo l’ombrello” può essere reso da “se piove, prendo l’ombrello”. Nell’ottica della formalizzazione, chiedere cosa significa “quando piove, prendo l’ombrello” non è altro che la richiesta di tradurre la frase in un’altra in cui compaia una particella logica (una di quelle riconosciute tali) e scompaia “quando”; cosı̀ si vede subito a quale delle particelle note la parola è equivalente; ma non sempre è evidente una possibile riduzione di una frase ad un’altra, né sempre una sola. Esistono peraltro parole di difficile catalogazione, che sembrano particelle logiche in quanto legano due frasi, ma hanno sfumature che si perdono nella formalizzazione: ad esempio “siccome piove, prendo l’ombrello”, o “prendo l’ombrello perché piove” potrebbe essere espressa dall’asserzione unica “la pioggia è la causa del mio prendere l’ombrello”, che coinvolge però la delicata parola “causa”; la frase contiene tuttavia una determinazione temporale (“siccome sta piovendo”), o anche una qualitativa (con un implicito riferimento forse a un particolare tipo di pioggia - a dirotto) che non la rende del tutto equivalente a “quando piove, prendo l’ombrello”. Esistono parimenti frasi di difficile interpretazione; la stessa “siccome piove, prendo l’ombrello”, o “poiché piove, prendo l’ombrello” invece che una frase può essere considerata un argomento, poiché in essa si afferma un fatto, che piove, oltre a un legame condizionale. Potrebbe corrispondere 1 Si noti l’uso della “o” nella nostra frase, di nuovo scambiabile con “e”: si voleva dire che non abbiamo menzionato “né . . . né” e non abbiamo menzionato “a meno che”; l’uso di “o” suggerisce un’altra versione equivalente: “una particella che sia “né . . . né” o “a meno che” non l’abbiamo menzionata”. 5 ad un esempio di modus ponens (si vedrà a suo tempo): “Se piove, prendo l’ombrello. Piove. Quindi prendo l’ombrello”. Useremo simboli speciali per rappresentare alcune particelle logiche che sembrano di uso più comune, almeno nei discorsi meno sofisticati. Per queste si potrebbero usare parole della lingua italiana - o comunque di una lingua naturale - fissando per convenzione in modo rigido il loro significato, come si fa ad esempio quando per la congiunzione si usa and, in informatica. Quando si usano and, e simili, si vuole che il linguaggio sia friendly perché ci si deve concetrare su altro; noi invece vogliamo concentrarci proprio su quelle parole, per cui sono meglio simboli nuovi, insoliti, che sorprendano; la scelta di simboli artificiali è più vantaggiosa anche perché, procedendo, questi simboli non saranno soltanto abbreviazioni, ma insieme ad altri diventeranno una struttura che è essa stessa, se si vuole, oggetto di una teoria matematica, con suoi problemi specifici. Ad esempio una prima questione comprensibile anche solo sulla base di quanto detto finora è se le particelle scelte sono anche fondamentali, e in che senso, o se sono sufficienti, o quante ce ne potrebbero essere. Un’altra riguarda l’equivalenza, affermata per alcuni esempi precedenti, tra frasi diverse espresse con particelle diverse. Queste strutture forniranno un ricco campo di scrittura di algoritmi non numerici ma simbolici, applicati a liste o alberi o altre strutture di dati, Il significato delle particelle logiche è lo stesso a prescindere dal lessico, e per studiarlo occorre non fissarsi su un linguaggio particolare; la trattazione deve valere per tutti, quindi useremo lo stesso artificio matematico di usare lettere (come p, q e altre) per indicare entità non precisate, che nelle applicazioni dovranno essere asserzioni sensate. Oggetto di studio saranno dunque configurazioni simboliche astratte del tipo “p e non q”2 che non rientrano apparentemente nell’esperienza comune; si consideri tuttavia che le persone sono in grado di pronunciare tutte le frasi del tipo “c’è una tavolo e non c’è una sedia”, “c’è una quadrato e non c’è un tavolo”, . . . e cosı̀ via per tutte le circa diecimila parole del lessico di una persona (colta). Il numero di queste e di tutte le altre frasi (come “se c’è un tavolo non c’è una sedia”) supera il numero dei neuroni del cervello, per cui, anche ammettendo - che non è - che ogni frase richieda un neurone o una combinazione di neuroni per la memorizzazione, non si può pensare che tutte le frasi della competenza linguistica siano immagazzinate in memoria; 2 Al posto di “e” e “non” ci saranno i simboli speciali corrispondenti. 6 questo significa che, insieme al lessico, sono immagazzinati invece schemi che possiamo immaginare di rappresentare (esternamente) come “p e non q”, e che questi fanno parte dell’inconscio cognitivo3 . Si tratta solo di diventarne consapevoli. L’oggetto di studio della logica sono tali schemi di frasi, non le frasi, e per questo si parla di logica formale. La formalizzazione del linguaggio naturale non è qualcosa di meccanico e di compiuto per l’intera gamma delle potenzialità espressive. Esistono argomenti controversi e ancora oggetto di discussioni e di proposte per una formalizzazione soddisfacente - che rientrano in studi più avanzati. La restrizione alle frasi dichiarative è uno di questi, dal momento che i comandi ad esempio hanno un ruolo apparentemente importante nella programmazione. Abbiamo visto qualche difficoltà con “siccome”. Allo stesso modo è discutibile se “è necessario che . . . ” sia da considerare una particella logica: “è necessario che al giorno segua la notte”, o “al giorno segue necessariamente la notte”, non sembra equivalente a “al giorno segue la notte”, e neanche a “al giorno segue sempre la notte”, che è equivalente alla precedente se “segue”, privo di determinazioni temporali, assorbe il “sempre”; anche “necessariamente 2 + 2 = 4” forse dice di più di “2 + 2 = 4”, ma non è del tutto chiaro che cosa. Ancora, è possibile sostenere che il costrutto “è vero che . . . ” è pleonastico, in quanto “è vero che piove” è equivalente a “piove”, ma è altrettanto possibile sostenere che non è possibile farne a meno. 2.1 Esercizi 1. Esaminare i seguenti discorsi (e altri tratti a scelta da fonti letterarie o giornalistiche) ed individuare le particelle logiche e le frasi elementari (racchiudendole tra parentesi e se necessario riformulando in modo equivalente i discorsi e le loro frasi). Se non è possibile prevedere tutte le azioni delle persone allora o l’universo non è deterministico o le persone non sono perfettamente razionali. Chi sostiene il determinismo deve 3 Non freudiano. Significa che nel cervello è memorizzato (hardwired ) uno schema del genere; non sappiamo come, ma di esso diventiamo coscienti attraverso l’uso delle variabili. 7 dunque sostenere che se le azioni delle persone sono prevedibili allora le persone sono perfettamente razionali. Se non è possibile prevedere tutte le azioni delle persone allora o l’universo non è deterministico o le persone non sono perfettamente razionali. Chi sostiene il determinismo deve dunque sostenere che se le azioni delle persone non sono prevedibili allora le persone non sono perfettamente razionali. Suggerimento. Introdurre abbreviazioni per le frasi che si ripetono, in modo da arrivare, nel caso del primo brano, a Se non Prev allora o non Det o non Raz. Chi sostiene Det allora deve sostenere che se Prev allora Raz e ancora, togliendo il “chi sostiene”, a Se non Prev allora o non Det o non Raz. Se Det allora (se Prev allora Raz). Le abbreviazioni aprono la strada all’uso delle lettere per indicare proposizioni; quando si saranno anche introdotti simboli per le particelle logiche e se ne saranno viste alcune leggi, sarà anche facile esprimere un giudizio sulla corettezza o meno dell’argomento. Altri esempi: Se le persone sono interamente razionali, allora o tutte le azioni di una persona possono essere previste in anticipo o l’universo è essenzialmente deterministico. Non tutte le azioni di una persona possono essere previste in anticipo. Dunque, se l’universo non è essenzialmente deterministico, allora le persone non sono interamente razionali. Il numero di queste e di tutte le altre frasi supera il numero dei neuroni del cervello, per cui, anche ammettendo - che non è - che ogni frase richieda un neurone o una combinazione di 8 neuroni per la memorizzazione, non si può pensare che tutte le frasi della competenza linguistica siano immagazzinate in memoria. 2. Con il costrutto “se . . . allora” e le frasi “dico x” e “x è una verità” esprimere: “dico tutta la verità e solo la verità”. 3. Scrivere con le giuste particelle logiche: a) non c’è fumo senza arrosto b) fumo vuol dire fuoco. 4. Trovare altre particelle logiche della lingua italiana, oltre a quelle menzionate nel testo. 5. Discutere se “cioè” è una particella logica o no, e a quali altre è eventualmente equivalente, in diversi contesti. 6. Cosa significa per voi “necessariamente 2 + 2 = 4”? 9 3 3.1 Logica proposizionale Connettivi Useremo per le particelle logiche i simboli: ¬ ∧ ∨ ⊕ → ↔ per per per per per per la negazione la congiunzione la disgiunzione inclusiva la disgiunzione esclusiva il condizionale “se . . . allora” il bicondizionale “se e solo se” senza escluderne a priori altri, e li chiameremo connettivi proposizionali. La negazione è un connettivo unario (cioè agisce su una proposizione), gli altri indicati sono connettivi binari (cioè connettono due proposizioni). Introdotti i simboli per i connettivi, occorre dare le loro precise regole d’uso, sia dal punto di vista sintattico (dove scriviamo ad esempio ¬ per formare la negazione di un’asserzione?), sia dal punto di vista semantico (come interpretiamo il significato delle frasi composte, in funzione delle frasi componenti?). 3.2 Sintassi La necessità di fornire regole rigide per la formazione delle frasi è data dalla volontà di evitare le ambiguità possibili nelle lingue naturali: la vecchia porta la sbarra è un esempio di frase essenzialmente ambigua, se non sono indicati quali sono soggetto e verbo. Si tratta di un’ambiguità che è risolvibile nel contesto della storia raccontata, e nel parlato soprattutto con le pause. Altre ambiguità si riferiscono proprio alla distribuzione dei connettivi; supponiamo ad esempio di leggere un problema: x2 + 4x + 3 < 0 e x < −3 o x > −2. Lo studente tende a rispondere “risolvo l’equazione, poi interseco con x < −3 e unisco con x > −2”, ma è l’ordine di queste operazioni che conta, che non sempre è quello del first come, first served nella scrittura del problema. Si può intendere che si chieda quali siano i valori per cui o si ha che 10 x2 + 4x + 3 < 0 e x < −3 o si ha che x > −2; si può anche intendere che si chieda quali siano i valori per cui si ha x2 + 4x + 3 < 0 ma ristretti ad essere x < −3 o x > −2. Nel primo caso la risposta è (−2, +∞), nel secondo caso è (−2, −1). Naturalmente l’ambiguità, che nel parlato si risolve con le pause, nella scrittura matematica si risolve con le parentesi, il primo caso essendo (x2 + 4x + 3 < 0 e x < −3) o x > −2 e il secondo caso x2 + 4x + 3 < 0 e (x < −3 o x > −2). La stessa soluzione delle parentesi1 adotteremo per le formule logiche. 3.2.1 Il linguaggio proposizionale Le frasi di ogni linguaggio sono stringhe2 di simboli dell’alfabeto. L’alfabeto del linguaggio proposizionale contiene, oltre ai connettivi, le parentesi sinistra “(” e destra “)”, e un insieme L di lettere proposizionali. Tali lettere non le chiamiamo variabili, come talvolta si usa, perché il loro dominio di variabilità (le frasi) è troppo indefinito. Le parole accettabili di questo alfabeto si chiameranno proposizioni , un termine tecnico per distinguerle dalle asserzioni dei linguaggi dotati di senso. Quello che importa delle proposizioni è solo la loro struttura formale, che poi si dovrà riconoscere nelle frasi dei linguaggi naturali o matematici, quando 1 Le parentesi sono state anche aggiunte al linguaggio naturale, ma solo nella scrittura - almeno la saggistica, meno la letteratura - non nel parlato. 2 Con “stringa” s’intende o lista o successione finita. Non è necessario entrare nei particolari del tipo di rappresentazione dei dati che si sceglie, finché non si deve implementare. 11 il linguaggio proposizionale sarà interpretato sostituendo alle lettere frasi relative ad un precisato argomento. Non tutte le stringhe di simboli dell’alfabeto sono ammesse come proposizioni. Una generica stringa, anche illecita, è chiamata “parola”. La definizione dell’insieme P delle proposizioni stipula innanzi tutto che: Per ogni lettera p ∈ L, (p) è una proposizione atomica (cioè non ulteriormente analizzata e scomposta nel contesto della trattazione). Per il resto della definizione, occorre parlare di proposizioni qualunque e della loro composizione; è quindi necessario avere delle variabili che variano sull’insieme delle proposizioni, e che si chiamano metavariabili 3 ; useremo le lettere A, B, . . . Si danno quindi le seguenti clausole: 1 Se A è una proposizione, anche (¬A) lo è. 2 Se • è un connettivo binario, e se A e B sono proposizioni, anche (A • B) lo è. Le clausole della definizione sono anche regole di costruzione. S’intende che ogni proposizione si ottiene applicando un numero finito di volte le clausole della definizione. Esempi 1. (p ∩ q) non è una proposizione perché ∩ non è un elemento dell’alfabeto4 . 2. p ∧ q non è una proposizione, perché: Ogni proposizione contiene almeno una parentesi5 . 3 La ragione di questo termine, non usato altrove in matematica, è che queste variabili indicano elementi di una struttura che è anch’essa un linguaggio, e che contiene a sua volta variabili (le lettere) che devono essere interpretate su frasi; “meta” significa “sopra”, “oltre”, e deriva dal greco, dove significava piuttosto “dopo”; ma dopo che sono stati chiamati “metafisica” i libri di Aristotele che seguivano quelli di fisca, è venuta questa variante di significato. 4 Per i linguaggi formali si chiede sempre che l’alfabeto e le sue diverse categorie di simboli siano insiemi decidibili, cioè tali che l’appartenenza o meno ad essi di un simbolo possa essere decisa da un algoritmo. 5 Tutte queste proprietà diventeranno esercizi sul principio di induzione nel paragrafo 15. 12 3. )p( non è una proposizione, come non lo sono p o )p), perché: Ogni proposizione inizia con una parentesi ( e termina con una parentesi ). 4. ((p) → (q)) è una proposizione perché ottenuta dalle proposizioni atomiche (p) e (q) con una applicazione della clausola induttiva relativa a →. 5. (¬((p) → (q))) è una proposizione perché ottenuta dalle proposizioni atomiche (p) e (q) con una prima applicazione della clausola induttiva relativa a → e una seconda applicazione della clausola relativa a ¬. 6. ((p) non è una proposizione perché: In ogni proposizione il numero di parentesi sinistre è uguale al numero di parentesi destre. 7. (pq) non è una proposizione perché non è atomica e non contiene nessun connettivo. Se una proposizione è della forma (¬A) o della forma (A • B), ¬ e • sono rispettivamente il suo connettivo principale, e A e B le sottoproposizioni immediate. Si dice che (¬A) è una negazione, citando il suo connettivo principale, la negazione di A - e si legge “non A”; si dice che (A ∧ B) è una congiunzione, la congiunzione di A e B - e si legge “A e B”; A e B sono le proposizioni congiunte in (A∧B); analogamente per la disgiunzione6 (A∨B) - che si legge “A o B”; (A ⊕ B) si può leggere “o A o B”; (A → B) si dice un condizionale - e si legge “se A allora B”; A si chiama antecedente, e B conseguente; (A ↔ B) si dice bicondizionale - e si legge “A se e solo se B”. 3.2.2 Analisi sintattica Una proposizione è una lista di simboli, ma è anche passibile di una rappresentazione con una diversa struttura. A ogni proposizione è associato un albero di costruzione, o di analisi sintattica 7 , che è un albero etichettato finito binario. 6 7 Chiameremo ∨ semplicemente disgiunzione, e ⊕ disgiunzione esclusiva o forte. In inglese parsing. 13 Un albero binario8 è un insieme parzialmente ordinato9 X con una relazione ¹ con le seguenti proprietà. ¹ è una relazione riflessiva, transitiva e antisimmetrica10 . Gli elementi dell’albero si chiamano nodi . Se x ¹ y, si dice che y è un successore, o un discendente di x. Esiste un nodo minimo r tale che r ¹ x per ogni nodo di X, e si chiama radice. I nodi a tali che non esiste b 6= a per cui a ¹ b si chiamano foglie11 . Ogni nodo che non sia una foglia ha uno o al massimo due successori immediati12 , dove si dice che b è un successore immediato di a se a ¹ b, a 6= b e non esiste un c tale che a ¹ c ¹ b, con c 6= a e c 6= b. La rappresentazione usuale di un albero binario è di questo tipo: • .& • • .& ↓ • • • ↓ • dove con la freccia si indica il successore immediato, la radice è in alto e l’albero cresce verso il basso. Un ramo è un insieme totalmente ordinato13 di nodi che va dalla radice a una foglia. La sua lunghezza è il numero di nodi che vi appartengono. L’altezza dell’albero è la massima lunghezza dei suoi nodi. Un albero si dice etichettato se ad ogni nodo è associato un elemento di qualche insieme prefissato, che si chiama etichetta. 8 Esistono definizioni leggermente diverse, più o meno generali, ad esempio con una o più radici; diamo quella che serve ai nostri scopi. 9 Presenteremo in seguito la definizione di relazione d’ordine e della terminologia connessa; per ora è sufficiente la rappresentazione data sotto. 10 Questo significa che x ¹ x, che se x ¹ y e y ¹ z allora x ¹ z e che x ¹ y e y ¹ x implicano x = y. 11 Esistono sempre se l’albero, ovvero l’insieme dei nodi X, è finito. 12 Un’altra terminologia è “figli”. Se ci sono due figli, s’intende che sono esplicitamente distinti il primo e il secondo - sulla pagina, a sinistra e a destra. 13 Per ora basti intendere che ogni nodo del ramo salvo l’ultimo ha esattamente un successore immediato. 14 L’albero sintattico di una proposizione è definito in questo modo: • la radice è etichettata con la proposizione data • ogni nodo ha nessuno, uno o due successori immediati a seconda che la proposizione etichetta del nodo sia atomica, o della forma (¬A), o della forma (A • B). Nel secondo caso il successore è etichettato con A, nel terzo caso i due successori sono etichettati rispettivamente con A e con B. Si chiama altezza della proposizione l’altezza del suo albero di costruzione. Esempio L’albero per (((p) ∧ (¬(q))) ∨ (¬(p))) è il seguente: (((p) ∧ (¬(q))) ∨ (¬(p))) .& ((p) ∧ (¬(q))) (¬(p)) .& ↓ (p) (¬(q)) (p) ↓ (q) La sua altezza è quattro. Le etichette dei nodi dell’albero di costruzione di una proposizione sono le sue sottoproposizioni . Le lettere che compaiono nelle (proposizioni atomiche nelle) foglie sono le lettere che occorrono nella proposizione; si dice che un simbolo occorre in una proposizione se è un elemento della lista (che è la proposizione); le occorrenze di un simbolo in una proposizione sono i vari posti della lista in cui il simbolo si presenta. Se p, . . . , q sono le lettere che occorrono nella proposizione A, si scrive anche A[p, . . . , q]. Qualche volta si usa questa notazione anche se p, . . . , q sono solo alcune delle lettere che occorrono in A, o viceversa se le lettere che occorrono in A sono incluse tra le p, . . . , q; invece di introdurre notazioni apposite, la differenza sarà chiara dal contesto o da esplicite precisazioni. Le parentesi sono essenziali per individuare il connettivo principale di una proposizione, e quindi per costruire il suo albero sintattico. Per individuare il connettivo principale, si usa un contatore di parentesi14 . 14 Horstmann, p. 76. 15 Il contatore scansisce la lista da sinistra verso destra, e scatta di +1 quando incontra una parentesi sinistra, di −1 quando incontra una parentesi destra. Condizione necessaria affinché una parola sia una proposizione è che il contatore, inizializzato a 0, torni a 0 solo alla fine della parola. Perché poi !!! la parola sia una proposizione bisogna che gli altri simboli siano distribuiti in mezzo alle parentesi in modo corretto. Ad esempio per (((p) ∧ (¬(q))) ∨ (¬(p))) il contatore assume i valori: 0 1 2 3 2 3 4 3 2 1 2 3 2 1 0. Per individuare il suo possibile connettivo principale, si elimina la prima parentesi, e si mette di nuovo in funzione il contatore su ((p) ∧ (¬(q))) ∨ (¬(p))) notando che esso assume questa volta i valori 0 1 2 1 2 3 2 1 0 quando arriva alla fine di ((p) ∧ (¬(q))). Questa parola è candidata ad essere una sottoproposizione; nel prossimo posto a destra compare un connettivo ∨, candidato a essere il connettivo principale, e se anche (¬(p)) è una parola si sarà trovato che la parola data è una disgiunzione di ((p) ∧ (¬(q)) e di (¬(p)). Poiché quest’ultima si vede facilmente che è una proposizione, proseguiamo l’analisi di ((p) ∧ (¬(q))). Il contatore applicato a questa assume i valori 0 1 2 1 2 3 2 1 0 16 e applicato a (p) ∧ (¬(q))) i valori 0 1 0 alla fine di (p), individuando a destra il connettivo ∧, che lega (p) e (¬(q)). In questo modo si arriva a costruire l’albero sintattico. Alcune parentesi sono sovrabbondanti, ma solo quelle della coppia più esterna e quelle nelle proposizioni atomiche, dove sono usate sia per uniformità sia per sottolineare la differenza tra una lettera come elemento dell’alfabeto e la lettera come proposizione15 . Ma ora per comodità di scrittura e lettura è meglio ridurre il numero di parentesi con le seguenti convenzioni: non si scrivono le parentesi intorno alle lettere nelle proposizioni atomiche, non si scrivono le parentesi più esterne, e si eliminano alcune coppie di parentesi intorno ad alcune sottoproposizioni, con un criterio sufficiente a farle ripristinare in modo corretto formulato nel seguente modo. Si ordinano per priorità i connettivi secondo le seguente graduatoria: ¬ ∧ ∨ ⊕ → ↔ Data quindi una parola le cui parentesi non rispettano le condizioni per essere una proposizione (sı̀ però la parità, il fatto che il numero di parentesi sinistre sia uguale a quello delle parentesi destre, il fatto che in ogni punto che non sia l’ultimo il numero di sinistre è maggiore o uguale di quello delle destre, e tutte le proprietà che si mantengono quando si eliminano alcune coppie di parentesi corrispondenti16 ), le parentesi si rimettono secondo questo procedimento: prima si rimettono le parentesi a sinistra e a destra delle 15 Tra alfabeto e parole cè una differenza di tipo logico. Nei linguaggi naturali si presentano alcune eccezioni, come le vocali “e” e “o” usate come parole, ma è raro che si parli dell’alfabeto; quando lo si fa, si scrive appunto “e” e non e. 16 In questo caso, in seguito, la chiameremo ancora proposizione. 17 lettere17 ; quindi si prende in esame la negazione, se occorre nella parola; si esamina un’occorrenza della negazione che non abbia immediatamente alla sua destra un’altra negazione18 . Alla sua destra c’è una parentesi sinistra - altrimenti si può dire che quella parola non proviene dalla eliminazione di coppie di parentesi da una genuina proposizione (brevemente, che non è una proposizione). Sia σ la parola alla sua destra che termina con la parentesi destra che chiude la parentesi sinistra. Per trovare la parentesi destra che “chiude” la parentesi sinistra si usa di nuovo il contatore in modo !!! ovvio. Allora si rimette una parentesi sinistra alla sinistra della negazione, se non c’è già, e una parentesi destra a destra di σ, se non c’è già, ottenendo (¬σ); si ripete per ogni occorrenza di ¬, quindi si passa ai connettivi binari e per ciascuno di essi •, nell’ordine di priorità, si considerano le più corte sottoparole σ e τ a sinistra e a destra di • che sono chiuse tra due parentesi sinistre e destre, e si introduce una parentesi ( a sinistra di σ e ) a destra di τ , se non ci sono già, ottenendo (σ • τ ), e cosı̀ via. Per occorrenze dello stesso connettivo si conviene l’associazione a destra, cioè ad esempio con A → B → C si intende A → (B → C). Esempi Data p ∧ ¬q ∨ ¬p, la reintroduzione delle parentesi avviene attraverso questa successione di passi: 1 (p) ∧ ¬(q) ∨ ¬(p) 2 (p) ∧ (¬(q)) ∨ (¬(p)) 3 ((p) ∧ (¬(q))) ∨ (¬(p)) 4 (((p) ∧ (¬(q))) ∨ (¬(p))). Data p → ¬(q ∧ ¬¬r) 1 (p) → ¬((q) ∧ ¬¬(r)) 2 (p) → ¬((q) ∧ ¬(¬(r))) 17 Questo praticamente si può fare anche alla fine, per non appesantire la scrittura, se lo si fa del tutto. 18 A parte questa condizione, l’ordine in cui si lavora sulle eventuali diverse occorrenze della negazione non è rilevante; lo si può anche fare in simultanea. Lo stesso vale per gli altri connettivi. 18 3 (p) → ¬((q) ∧ (¬(¬(r)))) 4 (p) → (¬((q) ∧ (¬(¬(r))))) 5 ((p) → (¬((q) ∧ (¬(¬(r)))))) oppure, per rendere più chiara la lettura 1 p → ¬(q ∧ ¬(¬r)) 2 p → ¬(q ∧ (¬(¬r))) 3 p → (¬(q ∧ (¬(¬r)))) 4 (p → (¬(q ∧ (¬(¬r))))) rimettendo infine le parentesi intorno alle lettere. Si noti che se fosse stata data p → ¬q ∧ ¬¬r la reintroduzione delle parentesi avrebbe portato a una diversa proposizione: ((p) → ((¬(q)) ∧ (¬(¬(r))))) (esercizio, e si confrontino i due alberi sintattici), per cui le due parentesi lasciate in p → ¬(q ∧ ¬¬r) sono essenziali, se si vuole parlare della !!! proposizione ((p) → (¬((q) ∧ (¬(¬(r))))) . Non è comunque necessario né obbligatorio togliere tutte le parentesi; per agevolare la lettura, o all’inizio quando non si è ancora fatta esperienza, può essere conveniente lasciarne alcune, che pure grazie alle convenzioni si potrebbero eliminare. Cosı̀ ad esempio si potrà scrivere p → (q ∧ r) invece di p → q ∧ r oppure (p ∨ q) → r invece di p ∨ q → r. Le parentesi si rimettono solo se si ha necessità di capire quale è il connettivo principale, per svolgere l’analisi sintattica. Le parentesi esterne possono tranquillamente essere tralasciate, finché la proposizione non deve essere combinata con altre mediante qualche connettivo. L’albero sintattico si può costruire direttamente anche per le espressioni prive di tutte le parentesi, se si tiene presente la priorità dei connettivi. Il connettivo principale è sempre quello di priorità più bassa. !!! Esempio L’albero per p ∧ ¬q ∨ ¬p è il seguente, essendo ∨ il connettivo principale: 19 p ∧ ¬q ∨ ¬p .& p ∧ ¬q ¬p .& ↓ p ¬q p ↓ q. Le etichette sono diverse, ma l’albero è lo stesso della proposizione analizzata in precedenza. Dal prossimo paragrafo, chiameremo “proposizioni” anche le parole ottenute da proposizioni per eliminazione di parentesi. 3.2.3 Esercizi 1. Discutere se le seguenti parole sono proposizioni: (p ∧ (q) (p)) ∧ q) ((p) ∧ q) ((p) ∧ (¬(q))) ((p) → ∧) p ((p)). 2. Verificare quali delle seguenti parole sono proposizioni e quali no, costruendo l’albero sintattico e spiegando dove eventualmente la costruzione fallisce e per quale ragione: (¬(¬p)) ((p) → ((q) ∨ (¬(r)))) (¬¬((p) → (q))) ((((p) → (q)) ∧ (p)) → (q)) ((¬(p)) ∧ (q)) ∨ (r)) (((¬(p)) ∧ (q)) ∨ (r)). 20 3. Dare ragioni per le seguenti proprietà (e si vedano poi gli esercizi in 15.10.1): Ogni proposizione ha lunghezza maggiore o uguale a 3. In ogni proposizione non atomica occorre un connettivo. In nessuna proposizione occorrono due connettivi consecutivi. In nessuna proposizione occorre la sottosequenza (), né )p. In ogni proposizione la sua lunghezza (come lista) è maggiore della sua altezza. 4. Una misura di complessità delle proposizioni è una funzione dalle proposizioni nei numeri naturali che soddisfa la condizione che la misura di una proposizione è maggiore delle misure delle proposizioni componenti, e le atomiche hanno tutte la stessa misura minima. Il numero (di occorrenze) dei connettivi è una misura di complessità, come lo sono la lunghezza (della stringa) e l’altezza (dell’albero sintattico). Trovare la relazione tra il numero di occorrenze di connettivi e l’altezza. Dimostrare con un controesempio che il numero di connettivi diversi non è una misura di complessità. 5. Eliminare le parentesi, applicando le convenzioni sulla priorità dei connettivi, dalle seguenti proposizioni: ((p) ∧ ((¬(q)) → (¬(p)))) ((¬(¬(¬(p)))) ∨ ((p) ∧ (q))) (((¬(p)) ∨ (¬(q))) ∧ ((¬(p)) ∨ (q))) (((p) ⊕ (¬(q))) → ((p) ∨ (¬(q)))). 6. Reintrodurre le parentesi nelle seguenti parole in modo da ottenere, se possibile, proposizioni, o se no spiegare il perché: ¬¬p ¬p ∧ q ∨ r p → q ∨ ¬r (p → q) ∧ p → q p→q∧p→q 21 p ∨ q ∧ r → ¬p p ∧ q ∧ r ∨ ¬r p ∧ (→ r ∨ q) p ⊕ ¬q → ¬p ⊕ q p ⊕ q ∨ r. 3.3 Semantica La semantica ha a che fare con le interpretazioni, grazie alle quali le proposizioni vengono ad assumere un senso (che a noi non interessa, lo bypassiamo) e diventano vere o false. Tale attribuzione finale di valori di verità è per noi l’operazione di interpretazione, che viene studiata in astratto per vedere se abbia proprietà generali, indipendenti dalle interpretazioni concrete. I valori di verità saranno rappresentati dall’insieme19 {0, 1}. Ci si colloca con tale scelta nell’ottica della logica classica a due valori. Nell’insieme {0, 1} è necessario introdurre un minimo di struttura20 : la più per semple consiste in convenire che 0 < 1 e usare la sottrazione come se 0 e 1 fossero numeri interi, con | x | a indicare il valore assoluto. Un’interpretazione è una funzione21 i : L −→ {0, 1}; una valutazione è una funzione v : P −→ {0, 1} che soddisfa le seguenti condizioni22 : v((¬A)) v((A ∧ B)) v((A ∨ B)) v((A ⊕ B)) v((A → B)) v((A ↔ B)) = = = = = = 1 − v(A) min{v(A), v(B)} max{v(A), v(B)} | v(A) − v(B) | max{1 − v(A), v(B)} 1− | v(A) − v(B) | . 19 Altre notazioni per i valori di verità sono {V, F }, {T, F }, {>, ⊥}, True, False. Vedremo in seguito che si può considerare un’algebra di Boole. 21 La notazione con la freccia sarà spiegata in seguito; per ora si intenda che a ogni lettera corrisponde un valore di verità, e per v sotto che a ogni proposizione corrisponde o 0 o 1. 22 Si noti che in v((¬A)) e in altre espressioni analoghe ci sono due tipi di parentesi, che andrebbero tipograficamente distinte; quelle interne sono le parentesi della proposizione, quelle esterne servono per la notazione funzionale v(x). 20 22 In alternativa, si considerano 0 e 1 come interi modulo23 2, {0, 1} = Z2 con le solite operazioni aritmetiche e si scrivono le condizioni: v((¬A)) v((A ∧ B)) v((A ∨ B)) v((A ⊕ B)) v((A → B)) v((A ↔ B)) = = = = = = 1 − v(A) v(A) · v(B) (v(A) + v(B)) − v(A) · v(B) v(A) + v(B) 1 − v(A) · (1 − v(B)) 1 − (v(A) + v(B)). Ogni interpretazione i si estende a una valutazione i∗ ponendo i∗ ((p)) = i(p) e definendo i∗ sulle proposizioni composte in modo da soddisfare le condizioni della definizione di valutazione. Per ogni valutazione v il valore di verità di una proposizione A si ottiene applicando ai valori delle sottoproposizioni immediate di A una funzione, che dipende dal connettivo principale di A. 3.3.1 Tavole di verità Ad ogni connettivo è associata una funzione di verità, cioè una funzione da {0, 1}n in {0, 1}, dove n è il numero di argomenti del connettivo ({0, 1}n è l’insieme delle n-uple di 0 e 1). Per il loro carattere finito queste funzioni sono rappresentate da tabelle, che sono dette tavole di verità. La tavola di verità della negazione è: A ¬A 0 1 1 0 la tavola di verità della congiunzione: 23 Per chi non sa cosa significa, sarà spiegato in seguito. 23 A 0 0 1 1 B 0 1 0 1 A∧B 0 0 0 1 la tavola di verità della disgiunzione: A 0 0 1 1 B 0 1 0 1 A∨B 0 1 1 1 la tavola di verità della disgiunzione esclusiva: A 0 0 1 1 B 0 1 0 1 A⊕B 0 1 1 0 la tavola di verità del condizionale: A 0 0 1 1 B 0 1 0 1 A→B 1 1 0 1 e la tavola di verità del bicondizionale: A 0 0 1 1 B 0 1 0 1 A↔B 1 0 0 1 24 Quando si deve trovare il valore di verità di una proposizione, o di un numero finito di esse, sotto un’interpretazione, è sufficiente considerare i valori assunti dalle lettere che vi compaiono, quindi le interpretazioni diventano assegnazioni di valori 0 o 1 ad un numero finito di lettere, e per ogni proposizione ce ne è un numero finito. Data una proposizione, il calcolo dei suoi valori di verità per ogni possibile interpretazione si può organizzare in una tabella con i valori progressivi attribuiti alle sottoproposizioni (individuate dall’analisi sintattica), come nei seguenti esempi: Se A è p ∧ ¬p → q: p 0 0 1 1 q ¬p p ∧ ¬p 0 1 0 1 1 0 0 0 0 1 0 0 p ∧ ¬p → q 1 1 1 1 Se A è p ∨ r → ¬p ∧ (q → r): p 0 0 0 0 1 1 1 1 q 0 0 1 1 0 0 1 1 r ¬p q → r ¬p ∧ (q → r) p ∨ r 0 1 1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 A 1 1 1 1 0 0 0 0 Tali tabelle si chiamano tavole di verità delle proposizioni. Come si vede dagli esempi, ci sono proposizioni che per ogni interpretazione hanno il valore 1, altre che per alcune interpretazioni hanno il valore 0 e per altre interpretazioni il valore 1. Si possono dare esempi di proposizioni che per ogni interpretazione assumono il valore 0 (esercizio). Si ricordi che una proposizione, in quanto schema, non è né vera né falsa; !!! solo la sua tavola di verità completa spiega tutti i possibili modi in cui lo schema può realizzarsi nelle diverse interpretazioni. 25 3.3.2 Esercizi 1. Costruire la tavola di verità delle proposizioni: (p → p) → p p → (p → p) p∨q →p∧q p ∨ (q ∧ r) → (p ∧ r) ∨ s p → (q → p). 2. Dire quale è la disgiunzione usata nella programmazione, considerando che ivi si adotta la valutazione pigra: “quando viene valutata una disgiunzione, e la prima condizione è vera, la seconda condizione non viene esaminata”24 . 3. Trovare le tavole di verità corrispondenti a “a meno che”, “anche se”. 4. Scrivere la tavola di verità per le particelle logiche “né . . . né” e “non (è vero che) sia . . . sia . . . ”. 5. Costruire la tavola di verità per if . . . then . . . else. Suggerimento. Si faccia attenzione che il costrutto if . . . then nei linguaggi di programmazione è usato piuttosto come ↔; se lo statement è falso l’istruzione non viene eseguita: ad esempio se si esegue25 if importo ≤ saldo then saldo = saldo - importo, “l’enunciato dell’assegnazione verrà eseguito sole se l’importo da prelevare è minore o uguale al saldo”. Nell’esercizio, si consideri invece “se . . . allora . . . , altrimenti . . . ”. 3.3.3 Validità e conseguenza Se i∗ (A) = 1, si dice che A è vera nell’interpretazione i, o che i soddisfa A, o che i è un modello di A, e si scrive anche !!! i |= A. 24 25 Horstmann, p. 212. Horstmann, p. 186. 26 Se esiste almeno una i tale che i |= A, si dice che A è soddisfacibile, o (semanticamente) consistente. Se non esiste alcun modello di A, si dice che A è insoddisfacibile, o (semanticamente) inconsistente, o contraddittoria, o una contraddizione. Se per ogni i si ha i |= A, si dice che A è logicamente valida, o logicamente vera, o una tautologia, e si scrive |= A. Si dice che B è conseguenza logica di A, o che A implica B, e si scrive A |= B se per ogni i, se i |= A allora i |= B. Si noti che, grazie alla tavola di verità del condizionale, Osservazione 3.3.1 Per ogni A e B, A |= B se e solo se |= A → B. Se A è A1 ∧ . . . ∧ An , A1 ∧ . . . ∧ An |= B si scrive A1 , . . . , An |= B. Se T = {A1 , . . . , An }, allora si dice che i soddisfa T se e solo se i |= A1 ∧. . .∧An . Se A |= B e B |= A, si dice che A e B sono logicamente equivalenti , o anche solo equivalenti, e si scrive A ≡ B. Per ogni A e B, A ≡ B se e solo se |= A ↔ B. Si noti che |= e ≡ sono segni metalinguistici. Le tautologie, in particolare quelle che sono nella forma di equivalenze, sono dette anche leggi logiche. Un elenco di leggi logiche notevoli è presentato nella pagina successiva. 27 Leggi logiche notevoli 1 A→A legge dell0 identità A ↔ ¬¬A legge della doppia negazione A∧B ↔B∧A commutatività di ∧ (A ∧ B) ∧ C ↔ A ∧ (B ∧ C) associatività di ∧ A∨B ↔B∨A commutatività di ∨ (A ∨ B) ∨ C ↔ A ∨ (B ∨ C) associatività di ∨ A∧A↔A idempotenza di ∧ A∨A↔A idempotenza di ∨ A∧B →A eliminazione di ∧ A→A∨B introduzione di ∨ A ∧ (B ∨ C) ↔ (A ∧ B) ∨ (A ∧ C) distributività A ∨ (B ∧ C) ↔ (A ∨ B) ∧ (A ∨ C) distributività A ∧ (A ∨ B) ↔ A legge di assorbimento A ∨ (A ∧ B) ↔ A legge di assorbimento ¬(A ∧ B) ↔ (¬A ∨ ¬B) legge di De M organ ¬(A ∨ B) ↔ (¬A ∧ ¬B) legge di De M organ ¬A ∨ A legge del terzo escluso ¬(A ∧ ¬A) legge di non contraddizione A → B ↔ ¬B → ¬A legge di contrapposizione A ∧ ¬A → B Lewis, o ex falso quodlibet A → (B → A) aff ermazione del conseguente ¬A → (A → B) negazione dell 0 antecedente (A → B ∧ ¬B) → ¬A legge di riduzione all0 assurdo (A → ¬A) → ¬A riduzione all0 assurdo debole (¬A → A) → A consequentia mirabilis ((A → B) → A) → A legge di P eirce (A → B) ∨ (B → A) legge di Dummett A → ((A → B) → B) modus ponens A → (B → C) ↔ B → (A → C) scambio antecedenti (A → C) ∧ (B → C) ↔ A ∨ B → C distinzione di casi (A → B) ∧ (¬A → B) → B distinzione di casi (A → (B → C)) → ((A → B) → (A → C)) distributività di → (A → B) ∧ (B → C) → (A → C) transitività di → A → (B → C) ↔ (A ∧ B) → C importazione/esportazione delle premesse 28 Per verificare queste leggi, dove A, B, . . . sono qualunque, si devono prima verificare le stesse nel caso particolare che A, B, . . . siano atomiche (ad esempio p → p per la legge dell’identità), e poi sfruttare il fatto che se A[p] è una tautologia e B è qualunque, allora anche il risultato della sostituzione di B a p in A è una tautologia (vedi esercizi). Per le leggi che sono scritte come condizionali e non bicondizionali, si vedrà in seguito che l’implicazione inversa in generale non sussiste (salvo alcuni casi, ad esempio per l’inverso della riduzione all’assurdo debole ¬A → (A → ¬A), che rientra nell’affermazione del conseguente). L’associatività della congiunzione giustifica che si possa scrivere senza ambiguità, indipendentemente dalle convenzioni sulle parentesi, A ∧ B ∧ C per (indifferentemente) A ∧ (B ∧ C) o (A ∧ B) ∧ C, o in generale A1 ∧ . . . ∧ An (e lo stesso per la disgiunzione). A ∧ (B ∧ C) e (A ∧ B) ∧ C sono diverse (si disegni il loro albero sintattico) ma si dice che sono uguali a meno di equivalenza logica. Anche le seguenti sono leggi logiche: A → B ↔ ¬A ∨ B (A ↔ B) ↔ (A → B) ∧ (B → A) A ⊕ B ↔ (A ∧ ¬B) ∨ (B ∧ ¬A) A ⊕ B ↔ (A ∨ B) ∧ ¬(A ∧ B). Si noti che le due leggi per ⊕ forniscono un esempio di come una particella logica possa essere espressa con diversi giri di frase equivalenti; queste equivalenze in genere mostrano cosa significa che frasi diverse vogliono dire la stessa cosa. Per mezzo di esse, dalle leggi elencate sopra se ne derivano altre; ad esempio dal modus ponens e dall’esportazione, con la prima, si ricava A ∧ (¬A ∨ B) → B sillogismo disgiuntivo. Ma queste leggi soprattutto permettono di vedere che i connettivi ⊕, →, ↔ sono definibili in termini di ¬, ∧ e ∨. Alcune leggi sono spesso presentate in forma di regole di inferenza; ad esempio il modus ponens da 29 A, A → B , B il sillogismo disgiuntivo da A, ¬A ∨ B B o da ¬A, A ∨ B , B l’eliminazione della congiunzione da A∧B A∧B e A B e l’introduzione della disgiunzione da A B e . A∨B A∨B Le leggi corrispondenti permettono di asserire che se sono vere le proposizioni sopra la riga, o premesse della regola, allora è vera anche la proposizione sotto la riga, o conclusione. Regole d’inferenza di questo genere si dicono corrette se le premesse implicano logicamente la conclusione - quindi le regole sopra elencate sono corrette. Per mezzo delle regole di inferenza si deduce una proposizione da un’altra, o da altre date, che si chiamano assunzioni; si dice che una proposizione B si deduce da un’altra A se A |= B e se questo fatto è riconosciuto e certificato da una spiegazione. Un modo per riconoscere la sussistenza di A |= B è quello di inserire tra A e B altre proposizioni legate tra loro dalla relazione di premesse-conclusione di regole corrette. Ad esempio per stabilire 30 (r → p ∨ q) ∧ r ∧ ¬p |= q si può eseguire la seguente deduzione: (r → p ∨ q) ∧ r ∧ ¬p r →p∨q r ¬p p∨q q usando l’eliminazione della congiunzione, il modus ponens e il sillogismo disgiuntivo. La relazione di conseguenza logica è evidentemente transitiva: se A |= C e C |= B allora A |= B (esercizio). 3.3.4 Esercizi 1. Verificare con le tavole di verità le precedenti leggi logiche. 2. Spiegare perché • Se |= A allora B |= A per ogni B. • Se |= A allora |= A ∨ B per ogni B. • Se |= A e |= A → B allora |= B. 3. Spiegare perché se A[p] è una tautologia, anche la proposizione che si ottiene sostituendo p con una B qualunque è una tautologia. 4. Verificare la seguente generalizzazione delle leggi di assorbimento, che A ≡ A ∨ C se C |= A, e che A ≡ A ∧ C se A |= C. !!! 5. Verificare che A ≡ T ∧ A se T è una tautologia e che A ≡ F ∨ A se F è una contraddizione, e dedurlo dal risultato del precedente esercizio. 6. Verificare che A → B ≡ ¬(A ∧ ¬B) (sia con le tavole, sia in base alla definizione di interpretazione). 7. Verificare che A ⊕ B è equivalente a ¬(A ↔ B), in base alla definizione di interpretazione. 31 8. Verificare che |= A ⊕ B → A ∨ B ma non viceversa. 9. Spiegare perché A → A ⊕ B non è logicamente vera. 10. Verificare che p ∨ q è equivalente a p ∨ (q ∧ ¬p) ed a p ⊕ (q ∧ ¬p). 11. Notare ¬(A ⊕ B) ≡ ¬A ⊕ B e A ⊕ ¬A ≡ A ∨ ¬A (provare a trovare frasi in italiano che si possono dire bene in entrambi i modi). 12. Verificare che la regola del sillogismo disgiuntivo è corretta anche con ⊕ al posto di ∨. 13. Verificare se A ⊕ (B ⊕ C) ≡ (A ⊕ B) ⊕ C. 14. In base al precedente esercizio, discutere quando A1 ⊕ . . . ⊕ An è vera. 15. Verificare che ¬¬¬¬A ≡ A e che ¬¬¬¬¬¬¬A ≡ ¬A. Generalizzare. 16. Si consideri il problema del merging di due liste List1 e List2 in una terza lista List3 (ad esempio nomi, in ordine alfabetico). Una prima formulazione dell’algoritmo è la seguente: nello scorrere le due liste, se List1 non è esaurita e List2 è esaurita oppure l’elemento in considerazione di List1 precede il primo non ancora inserito di List2, allora l’elemento di List1 è inserito in List3. Un’altra formulazione potrebbe essere la seguente: il prossimo elemento in List3 è preso da List1 quando List1 non è esaurita e List2 sı̀, oppure quando List1 non è esaurita e l’elemento in considerazione di List1 precede il primo non ancora inserito di List2. Usando lettere p, q, r per rappresentare rispettivamente “List1 non è esaurita”, “List2 è esaurita” e “l’elemento di List1 precede quello di List2”, scrivere le proposizioni corrispondenti alle due versioni delle condizioni (che portano entrambe a mettere in List3 l’elemento in esame di List1), e discutere se siano o no equivalenti, in base a quali leggi. 17. Si distribuiscono carte da gioco, e si sa che un giocatore ha in mano un Asso o un Re. Si considerino le seguenti due proposizioni: A: se c’è in mano un Asso, c’è un 2 B: se c’è in mano un Re, c’è un 2. 32 Che cosa si può dedurre se esattamente una tra le proposizioni A e B è vera? Che cosa si può dedurre se entrambe le proposizioni A e B sono vere? 18. Per conquistare la principessa, Aladino deve scegliere di aprire una di due scatole A e B; sa che in una c’è un anello di fidanzamento, nell’altra un serpente velenoso. Sulla scatola A è scritto: “Almeno una di queste scatole contiene un anello”; sulla scatola B è scritto: “Nella scatola A c’è un serprente velenoso che uccide all’istante”. Ad Aladino viene detto che o entrambe le scritte sono vere, o entrambe false. Quale scatola apre? 19. “Se io ho ragione, tu hai torto; se tu hai ragione, io ho torto; quindi uno di noi ha ragione”. Corretto o no? Perché? 20. “La storia insegna che non si impara niente dalla storia”. Vero o falso? Perché? Suggerimento. Riduzione all’assurdo debole. 3.4 Sull’implicazione Abbiamo distinto il condizionale, che è un connettivo, o il nome di una proposizione della forma A → B, dall’implicazione, che è una relazione tra proposizioni, e non si scrive A → B ma |= A → B. “A implica B” significa “il condizionale A → B è una tautologia”. La terminologia è qualche volta ambigua perché per leggere ad esempio una regola come il sillogismo disgiuntivo si trova anche detto “se A e ¬A ∨ B allora B”, in alternativa a “A e ¬A ∨ B implicano B”. Se si è in un contesto deduttivo si capisce forse che si sta parlando dell’implicazione e non leggendo semplicemente la forma di una proposizione. L’importante ad ogni modo non è la terminologia quanto capire la differenza. Il soggetto di “A implica B” non è A ma A → B. Qualche volta - non qui - si trova introdotto un simbolo speciale per l’implicazione (in analogia al caso dell’equivalenza), ad esempio A ⇒ B. Si dice ad esempio “il condizionale p → p ∨ q ha cinque simboli”, non “l’implicazione p → p ∨ q ha cinque simboli”, perché l’implicazione è un fatto che sussiste o no, e un fatto non è formato da simboli. Al massimo è un predicato, sotto cui cadono alcuni condizionali, come in “il condizionale 33 p → p ∨ q è un’implicazione”. Oppure si può dire che vale l’implicazione p → p ∨ q, ma non si parlerà ad esempio dell’implicazione p → q ∨ r, che non è una tautologia. Siccome purtroppo la terminologia non è uniforme, e si possono trovare usate entrambe le parole, bisogna fare attenzione al contesto. Nella tradizione logica, il condizionale era anche chiamato “implicazione materiale”, per distinguere la relazione di conseguenza da altre forme di implicazione, o da altri sensi del costrutto “se . . . allora”. In effetti, il significato di “se . . . allora” è polimorfo: • significato logico (o inferenziale): Se tutti gli uomini sono mortali e Socrate è un uomo, allora Socrate è mortale. • significato definitorio: Se è scapolo, allora non è sposato. • significato causale: Se si immerge una cartina di tornasole e diventa rossa, allora il liquido è un acido. • significato materiale: Se la Terra vola, allora la Terra è piatta. È difficile trovare qualcosa di positivo in comune tra queste diverse accezioni del “se . . . allora”. In particolare il caso che ha sollevato maggiori discussioni è l’ultimo, come considerare il condizionale se antecedente e conseguente sono entrambe false. Una cosa in comune ce l’hanno, ed è che in tutte le accezioni l’unico modo per dichiarare il condizionale falso è quello di riscontrare antecedente vera e conseguente falsa, anche per il significato materiale: “se la Terra è rotonda, allora il Sole è freddo” si considera falso. Allora il significato parziale comune si può esprimere riempiendo la tavola di verità con i valori che sono di fatto quelli di ¬(A ∧ ¬B): !!! Un condizionale è corretto [secondo Crisippo] se la negazione della sua conclusione è incompatibile con la sua premessa (Sesto Empirico, Schizzi pirroniani, II, 110-2). Si ottiene cosı̀ quella che gli antichi chiamavano implicazione materiale: 34 Secondo lui [Filone di Megara] ci sono tre modi in cui un condizionale può essere vero, e uno in cui può essere falso. Perché un condizionale è vero quando inizia con una verità e termina con una verità, come “se è giorno, è chiaro”. Ed è vero anche quando inizia con una falsità e termina con una falsità, come “se la terra vola, la terra ha ali”. Analogamente, è vero un condizionale che inizia con una falsità e termina con una verità, come “se la terra vola, la terra esiste”. Un condizionale è falso soltanto quando inizia con una verità e termina con una falsità, come “se è giorno, è notte (Sesto Empirico, Contro i matematici , VIII, 113). Con questa scelta per la tavola di → si giustifica la regola del modus ponens, che è quello che interessa, per l’uso che se ne fa nei discorsi con “se . . . allora”. Il motivo per cui il condizionale è difficile e controverso è che non gli si può associare una rappresentazione mentale immediata di quello che descrive. Quando si ascolta A ∧ B, le rappresentazioni nella mente del fatto descritto da A e di quello descritto da B vengono fuse in un’unica rappresentazione, del fatto descritto da A ∧ B, affiancandole o integrandole; anche con A ∨ B le due rappresentazioni possono essere compresenti, con l’attenzione che si sposta dall’una all’altra e viceversa, come se si guardassero alternativamente due quadri vicini. Con il condizionale non è possibile avere una rappresentazione del fatto descritto da A → B, combinando quelle relative ad A e B. Non esiste una rappresentazione unica della falsità di A. Vengono meno perciò gli ausili dell’immaginazione e della sensibilità; l’unico modo per dominare il condizionale è quello di imparare bene fino a interiorizzarle le sue condizioni d’uso, sia il calcolo dei valori di verità sia le leggi e le regole che lo concernono. La definizione del condizionale tuttavia non è solo adeguata per svolgere le dimostrazioni, grazie alla giustificazione del modus ponens, ma è anche comoda (nella scelta di dare il valore vero quando l’antecedente è falsa) per la costruzione generale dei linguaggi formali, e la trattazione delle variabili, come vedremo oltre. 35 4 Insiemi e algebre di Boole 4.1 Variabili Esempi di proposizioni a cui si applicano utilmente le nozioni e le tecniche logiche sono le formule matematiche; in esse tuttavia compaiono le variabili x, y, . . . 1 Le variabili che occorrono in una formula, ad esempio 1 < x < 3, si chiamano anche variabili individuali, perchè prendono come valori gli elementi dell’universo del discorso. In generale, un’asserzione in cui compare la variabile x sarà indicata con p(x). Possiamo considerare una formula del genere come una proposizione, che afferma qualcosa a proposito di x; x denota un elemento non precisato dell’universo. Quanto visto finora sulla logica proposizionale è già utile per alcune analisi logiche anche delle formule con variabili. Consideriamo di nuovo la formula aritmetica 1 < x < 3; immaginiamo che si stia parlando di numeri naturali (che cioè il dominio o universo di discorso sia costituito dai numeri naturali, e < rappresenti la relazione d’ordine). Di una tale formula non si può dire se è vera o falsa, dipende. Si può dire che è soddisfatta da certi (valori di) x; è come se fosse presente un numero incappucciato, che dice “io sono compreso tra 1 e 3”. Se si toglie il cappuccio ed appare 2 ha detto il vero, se appare 0, o 3 o 5 o qualsiasi altro numero, ha detto il falso. Se il numero incappucciato continua dicendo “quindi io sono il numero 2”, bisogna ammettere che la deduzione è corretta, anche senza sapere chi è il numero incappucciato. La formula 1 < x < 3 è soddisfatta dal solo elemento 2, e possiamo affermare 1 < x < 3 → x = 2. Se invece l’universo di discorso, che dalla formula in sé non si evince, è !!! quello dei numeri reali, la formula è soddisfatta anche da 1,1, da 1,9, da 2,5 e da tutti gli infiniti elementi dell’intervallo (1, 3). La formula 1 < x < 3 d’altra parte è un’abbreviazione per 1 < x ∧ x < 3; perché un valore di x la soddisfi, questo valore deve soddisfare sia 1 < x sia x < 3. Abbiamo dunque formule che assomigliano a quelle le linguaggio proposizionale, in quanto sono composizione mediante connettivi di formule atom1 All’argomento delle variabili sarà dedicato ampio spazio in seguito, per la loro importanza, non solo matematica ma logica in generale; esse permettono di completare l’analisi linguistica in modo molto più approfondito di quello che si realizza limitandosi a considerare i connettivi. 36 iche, solo che queste ultime invece di lettere sono espresisoni che contengono anche x. Si potrebbe dire che si tratta di un linguaggio proposizionale applicato. Ogni volta che si dà a x un valore, nell’universo fissato, è come assegnare il valore vero o falso alle componenti atomiche. Parleremo per semplicità anche in questo caso per ora di proposizioni, per non complicare la terminologia, quando applicheremo risultati della logica proposizionale, oppure le chiameremo formule, in analogia alle formule matematiche. 4.2 Algebra degli insiemi Se le proposizioni si riferiscono a un dominio di discorso costituito da un insieme U , “U ” per “universo”, ad ognuna di queste proposizioni p(x) è associato un insieme, che si può chiamare insieme di verità di p(x): Vp(x) = {x ∈ U | p(x) è vero in U }. Nel linguaggio insiemistico, x ∈ X significa che x è un elemento di X, o che x appartiene a X; x 6∈ X significa che x non appartiene a X. Con la notazione {x ∈ U | p(x) è vero in U }, si indica l’insieme degli elementi di U che soddisfano la condizione p(x) in U . Talvolta si scrive anche {x ∈ U | p(x)} o addirittura {x | p(x)} se è chiaro l’insieme ambiente U. Con la notazione {x1 , . . . , xn } si indica l’insieme i cui elementi sono x1 , . . . , xn . L’insieme {x, y} si chiama coppia (non ordinata) di x e y, che sono gli unici elementi di {x, y}: x ∈ {x, y} e y ∈ {x, y}2 , e inoltre z ∈ {x, y} → z = x ∨ z = y. La coppia {x, y} ha due elementi se x 6= y; altrimenti se x = y ne ha uno solo, si indica {x} e si chiama anche insieme unitario, o singoletto di x. L’insieme di verità di p(x) è anche l’insieme definito da p(x) in U . Ad esempio, se U = {a, b, c, d} e p(x) ↔ x = a ∨ x = b, l’insieme definito da p(x) in U è {a, b}. Se U è l’insieme dei numeri naturali e p(x) è la condizione “x è divisibile per 2”, l’insieme di verità di p(x) è l’insieme dei numeri pari, e tale insieme è definito dalla condizione “x è divisibile per 2”. 2 Talvolta si scrive x, y ∈ X per “x ∈ X e y ∈ X”. 37 Un insieme di verità è un sottoinsieme di U ; si dice che X è un sottoinsieme di Y , o che è contenuto3 in Y , in simboli X ⊆ Y , se ogni elemento di X è anche elemento di Y : per ogni x, se x ∈ X allora x ∈ Y . Qualche volta, raramente, si scrive Y ⊇ X per X ⊆ Y . Si dice che X è un sottoinsieme proprio di Y , e si scrive X ⊂ Y , se X ⊆ Y ma X 6= Y . Se X ⊆ Y e Y ⊆ X allora X e Y hanno gli stessi elementi; questo per definizione significa che X = Y . Quello che caratterizza gli insiemi non sono le loro eventuali definizioni ma i loro elementi; ad esempio l’insieme dei triangoli con due lati uguali e l’insieme dei triangoli con due angoli uguali sono lo stesso insieme. Cosı̀ {x, y} = {y, x}, da cui la dizione “non ordinata”. Le operazioni insiemistiche principali, sui sottoinsiemi di un insieme U , sono le seguenti: Complemento. Il complemento di X (rispetto a U ) è l’insieme degli elementi di U che non appartengono a X: ∼ X = {x ∈ U | x 6∈ X}. Differenza. La differenza di X meno Y è l’insieme degli elementi di U che appartengono a X e non a Y : X \ Y = {x ∈ U | x ∈ X ∧ x 6∈ Y }. Differenza simmetrica. La differenza simmetrica di X e Y è l’insieme degli elementi di U che appartengono a X e non a Y o a Y e non a X: X4Y = {x ∈ U | x ∈ X ⊕ x ∈ Y }. Intersezione. L’intersezione di X e Y è l’insieme degli elementi di U che appartengono sia a X sia a Y : X ∩ Y = {x ∈ U | x ∈ X ∧ x ∈ Y }. 3 Si distingue tra “essere contenuto”, che si riferisce a sottoinsiemi, ed “appartenere”, che si riferisce ad elementi. 38 X ∩ Y si legge: “X intersezione Y ” o “X intersecato con Y ” o “l’intersezione di X e Y ”. Unione. L’unione di X e Y è l’insieme degli elementi di U che appartengono ad almeno uno dei due insiemi X e Y : X ∪ Y = {x ∈ U | x ∈ X ∨ x ∈ Y } X ∪ Y si legge: “X unione Y ” o “X unito a Y ” o “l’unione di X e Y ”. L’intersezione di X e Y è il più grande insieme che è contenuto sia in X sia in Y , nel senso che X ∩ Y ⊆ X4 X ∩Y ⊆Y e se Z ⊆ X e Z ⊆ Y allora Z ⊆ X ∩ Y mentre l’unione di X e Y è il più piccolo insieme che contiene sia X sia Y , nel senso che X ⊆X ∪Y Y ⊆X ∪Y e se Y ⊆ X e Z ⊆ X allora Y ∪ Z ⊆ X. Per dimostrare X ∩ Y ⊆ X ad esempio, si osservi che se x ∈ X ∩ Y allora x ∈ X ∧ x ∈ Y , ma x ∈ X ∧ x ∈ Y → x ∈ X, quindi x ∈ X. Inoltre x ∈ X ∧ x ∈ Y → x ∈ Y , quindi X ∩ Y ⊆ Y . In modo analogo per le altre. Nella proprietà di minimalità dell’unione troviamo la spiegazione dello scambio di “e” ed “o” osservato in precedenza in certe frasi. Se si indica con Y l’insieme delle mele, con Z l’insieme delle pere, e con X l’insieme dei frutti, allora la frase “mele e pere sono frutti”, intesa come “le mele sono 4 Si noti che non occorrono parentesi perché non è possibile interpretare questa formula come X ∩ (Y ⊆ X) in quanto si avrebbe un’operazione tra un insieme e una proposizione - un errore di tipo, si dice in logica. Qualche volta le parentesi di mettono per agevolare la lettura. 39 frutti e le pere sono frutti” significa che Y ⊆ X ∧ Z ⊆ X, ma questa implica Y ∪ Z ⊆ X, cioè che “mele o pere sono frutti”. Viceversa, se Y ∪Z ⊆ X, allora siccome Y ⊆ Y ∪Z si ha, per la transitività di ⊆ - vedi oltre - che Y ⊆ X e analogamente Z ⊆ X, cioè “mele o pere sono frutti” implica a sua volta “le mele sono frutti e le pere sono frutti”. Le operazioni insiemistiche corrispondono ai connettivi: l’appartenenza al complemento è definita mediante la negazione, l’appartenenza all’intersezione mediante la congiunzione, e cosı̀ via. In analogia, si possono usare le stesse convenzioni sull’ordine di priorità dei simboli di operazione (∼, ∩, ∪) per !!! ridurre il numero di parentesi. Viceversa, ai connettivi proposizionali corrispondono le operazioni insiemistiche sugli insiemi di verità delle proposizioni componenti. V¬p(x) = Vp(x)∧q(x) = Vp(x)∨q(x) = ∼ Vp(x) Vp(x) ∩ Vq(x) Vp(x) ∪ Vq(x) . In particolare si ha Vx∈X = X. Si può osservare allora che le operazioni non sono tutte indipendenti, ad esempio: X \ Y = X ∩ (∼ Y ). Infatti X \Y = {x | x ∈ X ∧ x 6∈ Y } = {x | x ∈ X ∧ x ∈∼ Y } = {x | x ∈ X ∩ (∼ Y )} = X ∩ (∼ Y ). Ma le mutue relazioni delle operazioni le vedremo meglio più avanti. L’insieme vuoto ∅ è l’insieme che non ha alcun elemento, ed è un sottoinsieme di qualsiasi U , definito da una condizione contraddittoria qualunque: ∅ = {x ∈ U |p(x) ∧ ¬p(x)}, o 40 ∅ = {x ∈ U |x 6= x}. Se si denotasse questo insieme ∅U e si definisse ∅V = {x ∈ V | x 6= x} si avrebbe ∅U = ∅V perché i due insiemi hanno gli stessi elementi, nessuno per entrambi. Caratteristica dell’insieme vuoto è che per ogni x, in qualunque U , x 6∈ ∅. Due insiemi X e Y la cui intersezione sia vuota, X ∩ Y = ∅, cioè non abbiano alcun elemento in comune, si dicono disgiunti . Le relazioni tra le operazioni insiemistiche sono espresse da un gruppo di leggi. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 X ∩X =X idempotenza dell0 intersezione X ∪X =X idempotenza dell0 unione X ∩Y =Y ∩X commutatività dell0 intersezione X ∪Y =Y ∪X commutatività dell0 unione X ∩ (Y ∩ Z) = (X ∩ Y ) ∩ Z associatività dell0 intersezione X ∪ (Y ∪ Z) = (X ∪ Y ) ∪ Z associatività dell0 unione X ∩ (Y ∪ Z) = (X ∩ Y ) ∪ (X ∩ Z) distributività di ∩ rispetto a ∪ X ∪ (Y ∩ Z) = (X ∪ Y ) ∩ (X ∪ Z) distributività di ∪ rispetto a ∩ X ∩ (X ∪ Y ) = X assorbimento X ∪ (X ∩ Y ) = X assorbimento ∼ (∼ X) = X doppio complemento ∼ (X ∩ Y ) = (∼ X) ∪ (∼ Y ) legge di De M organ ∼ (X ∪ Y ) = (∼ X) ∩ (∼ Y ) legge di De M organ ∼∅=U ∼U =∅ X ∩ (∼ X) = ∅ legge dell0 inverso per ∩ X ∪ (∼ X) = U legge dell0 inverso per ∪ X ∩U =X legge dell0 elemento neutro per ∩ X ∪U =U X ∩∅=∅ X ∪∅=X legge dell0 elemento neutro per ∪ . Esistono altre leggi che riguardano la relazione ⊆ (alcune già menzionate), come 41 22 23 24 25 26 X⊆X ∅⊆X X⊆U X ⊆X ∪Y X ∩Y ⊆X e proprietà come 27 28 29 30 31 32 33 se X ⊆ Y e Y ⊆ Z allora X ⊆ Z X ⊆ Y se e solo se X ∩ Y = X X ⊆ Y se e solo se X ∪ Y = Y X ⊆ Y se e solo se X ∩ (∼ Y ) = ∅ X ⊆ Y se e solo se ∼ X ∪ Y = U se X ⊆ Y e X ⊆ Z allora X ⊆ (Y ∩ Z) se Y ⊆ X e Z ⊆ X allora (Y ∪ Z) ⊆ X. Ma non tutte sono indipendenti. La loro dimostrazione può consistere nel mostrare direttamente che i due insiemi implicati hanno gli stessi elementi. Esempi 3 X ∩ Y = Y ∩ X. Dimostrazione Se x ∈ X ∩ Y , allora x ∈ X ∧ x ∈ Y ; ma per la commutatività della congiunzione si ha allora x ∈ Y ∧ x ∈ X, quindi x ∈ Y ∩ X. Il viceversa, partendo da x ∈ Y ∩ X, è analogo. 4 X ∪ Y = Y ∪ X. Dimostrazione Se x ∈ X ∪ Y allora x ∈ X ∨ x ∈ Y . La conclusione segue come sopra per la commutatività della disgiunzione. Oppure usiamo la distinzione di casi: se x ∈ X, allora x ∈ Y ∨ x ∈ X per la tautologia A → B ∨ A. Se x ∈ Y allora per la tautologia A → A ∨ B si ha x ∈ Y ∨ x ∈ X. Quindi x ∈ X ∨ x ∈ Y → x ∈ Y ∨ x ∈ X e X ∪ Y ⊆ Y ∪ X. Il viceversa è analogo. 42 5 X ∩ (Y ∪ Z) = (X ∩ Y ) ∪ (X ∩ Z). Dimostrazione Mostriamo prima che X ∩ (Y ∪ Z) ⊆ (X ∩ Y ) ∪ (X ∩ Z). Se x ∈ X ∩(Y ∪Z) allora x ∈ X e x ∈ Y ∪Z. Ci sono due casi: o x ∈ Y o x ∈ Z. Nel primo caso, x ∈ X e x ∈ Y , quindi x ∈ X ∩ Y , e quindi x ∈ (X ∩ Y ) ∪ (X ∩ Z) per la 25, che supponiamo dimostrata5 . Nel secondo caso, x ∈ X e x ∈ Z, quindi x ∈ X ∩ Z e quindi x appartiene a (X ∩ Y ) ∪ (X ∩ Z), per la 25 e la 4. Si mostri ora nello stesso modo (esercizio) che (X ∩ Y ) ∪ (X ∩ Z) ⊆ X ∩ (Y ∪ Z), e l’uguaglianza è provata. 21 X ∪ ∅ = X. Dimostrazione Se x ∈ X ∪ ∅, allora x ∈ X ∨ x ∈ ∅, ma x 6∈ ∅ quindi per il sillogismo disgiuntivo x ∈ X. Il viceversa segue dalla 25. 24 X ⊆ U. Dimostrazione x ∈ U → (x ∈ X → x ∈ U ) - quale legge logica interviene? 23 ∅ ⊆ X. Dimostrazione Per ogni x, x ∈ ∅ → x ∈ X è vera, qualunque sia X, perché l’antecedente è falso. 17 X ∪ (∼ X) = U . Dimostrazione Per ogni x, x ∈ X ∨ ¬(x ∈ X) è vera per la legge del terzo escluso. Cosı̀ si dimostra ⊇, il viceversa è 24. 30 X ⊆ Y se e solo se X ∩ (∼ Y ) = ∅. Dimostrazione Se x ∈ X allora x ∈ Y ; se ora esistesse un x ∈ X ∩(∼ Y ) si avrebbe una contraddizione x ∈ Y e x ∈∼ Y . Come si vede dagli esempi, alcune proprietà delle operazioni sono diretta conseguenza delle omonime proprietà dei connettivi corrispondenti; dal terzo esempio relativo alla 5 si vede anche che in dimostrazioni di questo tipo fa comodo, per saltare qualche passaggio, fare appello ad altre delle leggi elencate - più semplici, o intuitive o già dimostrate. Più in generale, 5 La dimostrazione è implicita nella precedente dimostrazione di 4. 43 una volta dimostrate alcune delle suddette leggi in modo diretto, è possibile derivare le altre in stile algebrico, usando quelle già dimostrate e le leggi dell’uguaglianza. Con leggi dell’uguaglianza si intendono le proprietà riflessiva, simmetrica e transitiva di =, rappresentate dalle formule x=x x=y→y=x x = y ∧ y = z → x = z, e le proprietà di sostituzione, che sono di due tipi: t = s → f (t) = f (s), dove t ed s sono termini del linguaggio in uso, e f (x) un altro termine contenente la x, e t = s → (p(t) ↔ p(s)), dove p(x) sta per una proposizione qualunque contenente x. Queste leggi sono tacitamente usate nei passaggi di trasformazione di formule algebriche, o di proposizioni di qualunque linguaggio che contenga l’uguaglianza. I passaggi da un’uguaglianza ad un’altra presuppongono il modus ponens: da t = s a f (t) = f (s) grazie a t = s → f (t) = f (s). Nel caso delle leggi insiemistiche in esame le variabili sono X, Y, . . . invece che x, y . . . , perché non si riferiscono agli elementi ma ai sottoinsiemi. Esempi 1. La 15 segue dalla 14 e dalla 11 con i passaggi ∼∅=U ∼ (∼ ∅) =∼ U ∅ =∼ U ∼ U = ∅. 2. La 17 segue dalla 16 e dalle 12, 14, 11, 4, nell’ordine, con i seguenti passaggi 44 X ∩ (∼ X) = ∅ ∼ (X ∩ (∼ X)) =∼ ∅ (∼ X) ∪ (∼ (∼ X)) = U (∼ X) ∪ X = U X ∪ (∼ X) = U . 3. La 18 segue da 17, 7, 1, 16 e 21 con i seguenti passaggi X ∪ (∼ X) = U U = X ∪ (∼ X) X ∩ U = X ∩ (X ∪ (∼ X)) X ∩ U = (X ∩ X) ∪ (X ∩ (∼ X)) X ∩U =X ∪∅ X ∩ U = X. 4. La 31: X ⊆ Y se e solo se ∼ X ∪ Y = U , segue dalla 30 e da De Morgan con 11 e 14. Grazie alla validità delle leggi associative per unione e intersezione, queste operazioni possono essere generalizzate a più di due insiemi. Se A1 , . . . , An sono n sottoinsiemi di U , la loro unione è l’insieme i cui elementi sono gli elementi di U che appartengono a qualche Ai , in simboli: n [ Ai = {x ∈ U | per qualche i, 1 ≤ i ≤ n, x ∈ Ai } i=1 o anche Sn i=1 Ai , o semplicemente S Ai . L’intersezione generalizzata degli n insiemi è l’insieme degli elementi che appartengono a tutti gli Ai , in simboli: 45 n \ Ai = {x ∈ U | per ogni i, 1 ≤ i ≤ n, x ∈ Ai } i=1 o anche Tn i=1 Ai , o semplicemente T Ai . Per queste operazioni generalizzate valgono molte delle leggi dell’unione e intersezione, opportunamente riformulate, ad esempio le proprietà commutativa, associativa e di assorbimento; valgono le leggi di De Morgan: T S ∼ ( ni=1 Ai ) = ni=1 (∼ Ai ) e S T ∼ ( ni=1 Ai ) = ni=1 (∼ Ai ). Valgono le leggi distributive di una operazione generalizzata rispetto a una normale (non con entrambe generalizzate): ( n \ Ai ) ∪ B = n \ (Ai ∪ B) i=1 i=1 n [ n [ e ( Ai ) ∩ B = i=1 (Ai ∩ B). i=1 Più in generale ancora, si definisce l’unione S S {Ai | i ∈ I} i∈I Ai o per una famiglia di insiemi indiciata6 da I ponendo che S x ∈ i∈I Ai se e solo se esiste un i ∈ I per cui x ∈ Ai , e analogamente per l’intersezione. La definizione come si vede è la stessa, con “i ∈ I” al posto di “1 ≤ i ≤ n”. 6 Si chiama cosı̀ e si indica anche con {Ai }i∈I un insieme i cui elementi corrispondono ciascuno a un elemento di un insieme I. Si veda alla fine del paragrafo 5. 46 4.3 Algebre di Boole Indagando la reciproca derivabilità delle varie leggi, ci si accorge che tutte (sia quelle elencate che altre, quelle che sono valide per ogni famiglia di sottoinsiemi di un insieme) sono derivabili dalle seguenti: 3 4 5 6 7 8 9 10 16 17 18 21 X ∩Y =Y ∩X X ∪Y =Y ∪X X ∩ (Y ∩ Z) = (X X ∪ (Y ∪ Z) = (X X ∩ (Y ∪ Z) = (X X ∪ (Y ∩ Z) = (X X ∩ (X ∪ Y ) = X X ∪ (X ∩ Y ) = X X∩ ∼ X = ∅ X∪ ∼ X = U X ∩U =X X ∪∅=X ∩Y)∩Z ∪Y)∪Z ∩ Y ) ∪ (X ∪ Y ) ∩ (X commutatività dell0 intersezione commutatività dell0 unione associatività dell0 intersezione associatività dell0 unione ∩ Z) distributività di ∩ rispetto a ∪ ∪ Z) distributività di ∪ rispetto a ∩ assorbimento assorbimento 0 legge dell inverso per ∩ legge dell0 inverso per ∪ legge dell0 elemento neutro per ∩ legge dell0 elemento neutro per ∪ . Queste leggi si chiamano assiomi delle algebre di Boole. La scelta degli assiomi non è arbitraria (ci sono ragioni di analogia con altri sistemi di assiomi per altre strutture) ma non è univoca. Abbiamo visto ad esempio che se ci fosse la 1, la 18 sarebbe superflua. L’importante è la mutua e varia interderivabilità delle leggi tra loro, e che tutte le leggi valide per i sottoinsiemi di un insieme non vuoto U siano derivabili da quelle scelte come assiomi. La raccolta di queste negli assiomi è solo, inizialmente, una comodità mnemonica. L’insieme dei sottoinsiemi di un insieme non vuoto U , con le operazioni ∼, ∩, ∪ e gli elementi speciali ∅ e U è una particolare algebra di Boole, che si chiama algebra di insiemi . Vediamo come si derivano dagli assiomi alcune delle altre leggi prima elencate. 1 X =X ∩X 47 X X X X X 2 X =X ∪X 20 X ∩∅=∅ =X ∩U = X ∩ (X∪ ∼ X) = (X ∩ X) ∪ (X∩ ∼ X) = (X ∩ X) ∪ ∅ =X ∩X (esercizio) X ∩ ∅ = (X ∪ ∅) ∩ ∅ X ∩ ∅ = ∅ ∩ (∅ ∪ X) X ∩∅=∅ 19 X ∪U =U per la 18 per la 17 per la 7 per la 16 per la 21 per la 21 per la 3 e la 4 per la 9 (esercizio). Prima di considerare altre leggi, occorre dimostrare l’unicità degli elementi neutri e del complemento. Per quello dell’intersezione, questo significa: 34 Se X ∩ Y = Y per ogni Y , allora X = U . Dimostrazione Sostituendo U a Y si ha X ∩ U = U ma X ∩ U = X per la 18, quindi X = U . Per l’elemento neutro dell’unione, l’unicità significa: 35 Se X ∪ Y = Y per ogni Y , allora X = ∅ (esercizio). L’unicità del complemento, o dell’inverso, è la proprietà che: 36 Se X ∩ Y = ∅ e X ∪ Y = U allora X =∼ Y . Dimostrazione X =X ∩U = X ∩ (Y ∪ ∼ Y ) = (X ∩ Y ) ∪ (X∩ ∼ Y ) = ∅ ∪ (X∩ ∼ Y ) = (Y ∩ ∼ Y ) ∪ (X∩ ∼ Y ) = (Y ∪ X)∩ ∼ Y = U∩ ∼ Y =∼ Y 48 per la 18 per la 17 per la 7 per l0 ipotesi per la 16 per la 7 per l0 ipotesi per la 18. 11 X =∼∼ X Dimostrazione Siccome X∩ ∼ X = ∅ e X∪ ∼ X = U , per la 36 ora vista con ∼ X al posto di Y si ha X =∼∼ X. 13 ∼ (X ∪ Y ) =∼ X∩ ∼ Y Dimostrazione Per applicare la 36, facciamo vedere che (∼ X∩ ∼ Y ) ∪ (X ∪ Y ) = U e (∼ X∩ ∼ Y ) ∩ (X ∪ Y ) = ∅. La prima segue da questi passaggi (abbreviati, esplicitarli tutti per esercizio, serve anche la 19 di sopra): (∼ X∩ ∼ Y ) ∪ (X ∩ Y ) = (∼ X ∪ X ∪ Y ) ∩ (∼ Y ∪ X ∪ Y ) =U ∩U =U e la seconda (utilizzando 20) da: (∼ X∩ ∼ Y ) ∩ (X ∪ Y ) = (∼ X∩ ∼ Y ∩ X) ∪ (∼ X∩ ∼ Y ∩ Y ) = ∅ ∪ ∅ = ∅. 4.3.1 Esercizi 1. Dimostrare A ∩ (B ∪ (C \ A)) = A ∩ B A ∩ B ∩ (A ∪ B) = A ∩ B A ∪ (C ∩ (A ∪ B)) = A ∪ (C ∩ B) (A \ B) ∪ (B ∩ A) = A (A ∩ (B ∪ C)) ∩ (∼ B ∪ A) = (A ∩ B) ∪ (A ∩ C). 49 2. Dimostrare le proprietà 22 - 33 della relazione ⊆, a partire dagli assiomi, usando 28 come definizione di ⊆7 . 3. Lo stesso, usando una volta 29, una volta 30 e una volta 31 come definizione di ⊆ 4. Dimostrare, a partire dagli assiomi delle algebre di Boole, tutte le altre leggi sopra elencate per le operazioni di un’algebra di insiemi. 4.4 Algebra delle proposizioni Due altre notevoli algebre di Boole sono importanti, l’algebra 2 e l’algebra delle proposizioni. Quando si dice che gli assiomi sopra elencati sono gli assiomi delle algebre di Boole, non si intende che i simboli di operazioni usati nella formulazione degli assiomi denotino le operazioni insiemistiche di unione, intersezione e complemento; altrimenti le uniche algebre di Boole sarebbero le algebre di insiemi. S’intende solo che siano operazioni rispettivamente binarie (le prime due) e unaria (la terza), e che soddisfino le proprietà espresse dagli assiomi. Può essere utile addirittura riscrivere gli assiomi con altri simboli8 : x◦ y =y◦x commutatività x+y =y+x commutatività x ◦ (y ◦ z) = (x ◦ y) ◦ z associatività x + (y + z) = (x + y) + z associatività x ◦ (y + z) = (x ◦ y) + (x ◦ z) distributività x + (y ◦ z) = (x + y) ◦ (x + z) distributività x ◦ (x + y) = x assorbimento x + (x ◦ y) = x assorbimento x ◦ (−x) = 0 inverso x + (−x) = 1 inverso x◦ 1=x elemento neutro x+0=x elemento neutro 7 La 22 e la 27, insieme a “X = Y se e solo se X ⊆ Y e Y ⊆ X” stabiliscono che ⊆ è una relazione di ordine parziale, secondo la definizione che sarà data nel paragrafo 5. 8 Con l’ordine di priorità −, ◦, +. 50 e indicare la relazione definita da x ◦ y = x con ≤. Si ha 0 ≤ x ≤ 1 per ogni x (esercizio). La relazione ≤ è un ordine parziale per l’esercizio 1 di 4.3.1. L’algebra 2 è l’algebra il cui universo è {0, 1} con 0 < 1, rappresentata dal diagramma 1 ↑ 0 dove ↑ è < e x + y = max{x, y} e x ◦ y = min{x, y}. L’algebra 2 è l’algebra dei valori di verità. Le sue tre operazioni sono quelle che intervengono nel calcolo dei valori di verità di negazioni, disgiunzioni e congiunzioni. Esistono altre algebre di Boole finite, come ad esempio l’algebra 4 1 % - a b - % 0 dove a e b sono inconfrontabili rispetto a ≤; ≤ è proprio parziale. Esercizio: definire le operazioni in modo che questa struttura diventi un’algebra di Boole. Esercizio. Dimostrare che è l’algebra dei sottoinsiemi di un universo con due elementi. L’algebra delle proposizioni si ottiene nel seguente modo; già si sono dimostrate (considerando anche gli esercizi) quasi tutte le leggi logiche che hanno lo stesso nome degli assiomi delle algebre di Boole: A∧B ↔B∧A commutatività A∨B ↔B∨A commutatività A ∧ (B ∧ C) ↔ (A ∧ B) ∧ C associatività A ∨ (B ∨ C) ↔ (A ∨ B) ∨ C associatività A ∧ (B ∨ C) ↔ (A ∧ B) ∨ (A ∧ C) distributività A ∨ (B ∧ C) ↔ (A ∨ B) ∧ (A ∨ C) distributività A ∧ (A ∨ B) ↔ A assorbimento A ∨ (A ∧ B) ↔ A assorbimento. 51 Le equivalenze non sono uguaglianze ma si possono trasformare in vere uguaglianze tra (nuovi) oggetti con la seguente costruzione. La relazione ≡ è una relazione di equivalenza, vale a dire soddisfa le proprietà: A≡A se A ≡ B allora B ≡ A se A ≡ B e B ≡ C allora A ≡ C rif lessiva simmetrica transitiva. Si definisce allora per ogni A la classe di equivalenza di A come [A] = {B | A ≡ B} e si ha che [A] = [B] se e solo se A ≡ B (esercizio). Date due proposizioni A e B, esse o sono logicamente equivalenti o no. Nel primo caso, [A] = [B]. Nel secondo caso le due classi [A] e [B] sono disgiunte: se infatti ci fosse un elemento C in comune, vorrebbe dire che A ≡ C e che B ≡ C, ma allora per la transitività si avrebbe A ≡ B e [A] = [B]. A si dice un rappresentante della classe [A]; ogni classe ha più rappresentanti, anzi infiniti. Se B ∈ [A] allora B ≡ A quindi [A] = [B] e B è un altro rappresentante di [A]. In particolare ad esempio [A] = [A∧A] = [A∧A∧A] . . . Si possono definire tra queste classi le seguenti operazioni: −[A] = [¬A] [A] ◦ [B] = [A ∧ B] [A] + [B] = [A ∨ B]. Le definizioni sono ben poste, in questo senso. Si tratta di operazioni sulle classi, ma la loro definizione fa riferimento ad un particolare rappresentante delle classi. Ad esempio −[A] è definita con ¬A e non ad esempio con ¬¬¬A. Se si cambia il rappresentante di una classe, si vuole che il risultato, che è una classe, sia lo stesso. 52 In effetti è cosı̀ per le operazioni sopra definite. Ad esempio se A1 ≡ A e B1 ≡ B, siccome A1 ∧ B1 ≡ A ∧ B (esercizio - si veda anche paragrafo 6.1) si ha [A1 ] ◦ [B1 ] = [A ∧ B], cosı̀ come [A] ◦ [B] = [A ∧ B], quindi [A1 ] ◦ [B1 ] = [A] ◦ [B]. Si giustifica in questo modo la dizione “a meno di equivalenza” con cui una proposizione è considerata uguale ad ogni altra ad essa logicamente equivalente, o almeno indistinguibile da quelle, ai fini della trattazione semantica. Date queste definizioni, le precedenti equivalenze danno allora origine alle uguaglianze: [A] ◦ [B] = [B] ◦ [A] commutatività di ◦ [A] + [B] = [B] + [A] commutatività di + [A] ◦ ([B] ◦ [C]) = ([A] ◦ [B]) ◦ [C] associatività di ◦ [A] + ([B] + [C]) = ([A] + [B]) + [C] associatività di + [A] ◦ ([B] + [C]) = ([A] ◦ [B]) + ([A] ◦ [C]) distributività [A] + ([B] ◦ [C]) = ([A] + [B]) ◦ ([A] + [C]) distributività [A] ◦ ([A] + [B]) = [A] assorbimento [A] + ([A] ◦ [B]) = [A] assorbimento. Tutte le tautologie sono tra loro equivalenti, e non equivalenti a nessuna proposizione non logicamente valida; lo stesso per le contraddizioni; denotiamo con 1 la classe delle tautologie, e con 0 la classe delle contraddizioni. Allora [A] ◦ (−[A]) = [A ∧ ¬A] = 0 e [A] + (−[A]) = [A ∨ ¬A] = 1 e possiamo quindi aggiungere: [A] ◦ (−[A]) = 0 [A] + (−[A]) = 1 [A] ◦ 1 = [A] [A] + 0 = [A] inverso inverso elemento neutro elemento neutro completando la lista degli assiomi delle algebre di Boole. Le ultime due leggi seguono dal fatto (o lo esprimono in altra forma) che se T è una tautologia A∧T ≡ A e se F è una contraddizione allora A∨F ≡ A. La relazione [A] ≤ [B] è definita da [A]◦[B] = [A], oppure dall’equivalente9 [A] ◦ −[B] = 0. 9 O anche da [A]+[B] = [B] - a seconda dei casi converrà usare l’una o l’altra definizione. 53 Inseriamo qui una dimostrazione dell’equivalenza tra due definizioni di ≤, dove si noterà l’analogia formale con quella fatta in 4.3.1 per la definizione di ⊆ (la 28 e la 30 dell’algebra degli insiemi). Se x◦y =x allora 1 = x + (−x) 1 = (x ◦ y) + (−x) 1 = (x + (−x)) ◦ (y + (−x)) 1 = (y + (−x) 0 = x ◦ (−y). Viceversa se x ◦ (−y) = 0 allora x=x◦1 x = x ◦ (y + (−y)) x = (x ◦ y) + (x ◦ (−y)) x = x ◦ y. Esercizio. Dimostrare l’equivalenza con la (versione corrispondente della) 29. Dall’equivalenza booleana delle due definizioni di ≤ si deriva la seguente proprietà logica, che A ≡ A ∧ B se e solo se |= A → B. Una dimostrazione logica di questo fatto ricalca la dimostrazione algebrica di sopra. Si noti che [A] = 0 significa che A è una contraddizione. Allora la seguente è una deduzione del fatto che |= A → B segue da A ≡ A ∧ B: A ∨ ¬A (A ∧ B) ∨ ¬A (A ∨ ¬A) ∧ (B ∨ ¬A B ∨ ¬A A → B. 54 Ogni proposizione o è una tautologia o segue logicamente dalle precedenti e da A ≡ A ∧ B, quindi l’ultima è una tautologia. Viceversa, se A ∧ ¬B è una contraddizione A ↔ A ∧ (B ∨ ¬B) A ↔ (A ∧ B) ∨ (A ∧ ¬B) A ↔ A ∧ B. Esercizio. Dimostrare in modo analogo che A ≡ A ∨ B se e solo se |= B → A. La corrispondenza tra le deduzioni algebriche e quelle logiche è fondata sulla corrispondenza tra [A] ≤ [B] e |= A → B. Il fatto che per ogni A, 0 ≤ [A] ≤ 1 corrisponde al fatto che una contraddizione implica qualsiasi proposizione, e una tautologia è implicata da qualsiasi proposizione. La relazione booleana ≤ ha le seguenti proprietà, che se a ≤ b allora −b ≤ −a e per ogni c, c ◦ a ≤ c ◦ b e c + a ≤ c + b (esercizio). Queste proprietà corrispondono per l’implicazione al fatto che se |= A → B allora |= ¬B → ¬A e per ogni C, |= C ∧ A → C ∧ B e |= C ∨ A → C ∨ B (esercizio). La proprietà transitiva di ≤ corrisponde alla transitività del condizionale, mentre la proprietà di sostituzione t = s → f (t) = f (s) corrisponde ad un’analoga proprietà logica: se in una proposizione si sostituisce una sottoproposizione con una equivalente, il risultato è una proposizione equivalente a quella iniziale. Conviene indicare l’operazione di rimpiazzamento di una sottoproposizione B con C in una proposizione A, con la notazione: A[B//C]. Si ha allora che se B ≡ C allora A ≡ A[B//C]. Nell’esempio di sopra A ∨ ¬A ≡ (A ∧ B) ∨ ¬A poiché A ≡ A ∧ B. Nella dimostrazione, per trattare i vari casi, si fa uso dei seguenti fatti Per ogni A e B, se A ≡ B, allora se A1 ≡ A2 e B1 ≡ B2 , allora ¬A ≡ ¬B A1 • B1 ≡ A2 • B2 che si dimostrano facilmente con le tavole di verità per i vari connettivi. 55 4.5 Rapporti tra proposizioni e insiemi I rapporti tra algebra degli insiemi con operazioni insiemistiche, logica proposizionale con connettivi e algebra boleana sono molteplici e bidirezionali. Sostanzialmente l’argomento è sempre lo stesso, con varianti formali, e a seconda delle preferenze si può adottare l’uno o l’altro dei tipi di simbolismo coinvolti; la familiarità con l’uno aiuta anche nello svolgimento dell’altro, ma il ragionamento è identico. Abbiamo visto come, per dimostrare le leggi dell’algebra degli insiemi (cioè identità valide per tutti i sottinsiemi di un qualunque insieme non vuoto U ), procedendo direttamente in base alla definizione di uguaglianza tra insiemi (X = Y se e solo se X ⊆ Y e Y ⊆ X) ci si riconduca ad applicare leggi logiche a proposizioni costruite su atomiche della forma x ∈ X, x ∈ Y, . . . Si possono anche al contrario derivare le leggi logiche dalle leggi dell’algebra degli insiemi. In generale due proposizioni (con o senza la x) logicamente equivalenti10 hanno lo stesso insieme di verità in ogni U . Supponiamo infatti che p(x) sia equivalente a q(x). Allora siccome p(x) → q(x) e q(x) → p(x) sono sempre vere, Vp(x)→q(x) e Vq(x)→p(x) sono entrambi uguali a U ; ma siccome Vp(x)→q(x) = (∼ Vp(x) ) ∪ Vq(x) , se questo è uguale a U allora Vp(x) ⊆ Vq(x) e viceversa, quindi Vp(x) = Vq(x) . Vale anche il viceversa; diciamo che una proposizione p(x) è valida in U se Vp(x) = U ; allora se Vp(x) = Vq(x) in U si ha che p(x) ↔ q(x) è valida in U . Basta ripercorrere all’indietro i precedenti passaggi. Supponiamo allora di voler dimostrare |= ¬(p ∨ q) ↔ ¬p ∧ ¬q. Pensiamo ad un insieme qualunque U (che non c’è bisogno di precisare, in accordo col fatto che usiamo leggi valide per insiemi qualunque). Consideriamo i sottoinsiemi Vp = {x ∈ U | p } e Vq = {x ∈ U | q }. Non importa che p e q contengano o no la x; basta che valga, per definizione, che x ∈ Vp ↔ p, cioè che Vp sia definito ponendo che x ∈ Vp è vero se e solo se p è vero. Se p non contiene x, p o è vera o è falsa, indipendentemente da x. In tal caso Vp = {x ∈ U | p } o è ∅ o è U . Dalla definizione di insieme di verità e dalla legge insiemistica ∼ (Vp ∪ Vq ) = (∼ Vp ) ∩ (∼ Vq ), 10 Nel senso che p(x) e q(x) hanno sempre lo stesso valore di verità calcolato a partire dalla attribuzione di 0 e 1 alle loro componenti atomiche, anche se contengono x. 56 cioè x ∈∼ (Vp ∪ Vq ) se e solo se x ∈ (∼ Vp ) ∩ (∼ Vq ), segue, siccome x ∈ ∼ (Vp ∪ Vq ) se e solo se ¬(p ∨ q), e analogamente per x ∈ (∼ Vp ) ∩ (∼ Vq ), che ¬(p ∨ q) ↔ ¬p ∧ ¬q è vero qualsiasi siano p e q, la cui verità o falsità non gioca alcun ruolo nella dimostrazione11 . Un altro modo più semantico è il seguente. Siccome p e q non contengono la x, gli insiemi Vp = {x ∈ U | p } e Vq = {x ∈ U | q } come abbiamo detto sono o ∅ o U . Possiamo interpretare allora ∼ (Vp ∪ Vq ) = (∼ Vp ) ∩ (∼ Vq ) o direttamente ¬(p ∨ q) ≡ ¬p ∧ ¬q nell’algebra 2, riscrivendola formalmente come −(x + y) = −x ◦ −y, che è una legge valida in 2. Questo significa che comunque si sostituiscano i valori 0 o 1 a x e y l’uguaglianza vale, e questo è un altro modo di dire che comunque si diano a p e q i valori 0 o 1 si ottiene che ¬(p ∨ q) e ¬p ∧ ¬q hanno lo stesso valore, cioè la tavola del bicondizionale ¬(p ∨ q) ↔ ¬p ∧ ¬q ha tutti 1 nella colonna finale. Un ragionamento semantico del genere può sostituire il modo di procedere formale diretto, in cui una deduzione algebrica viene trasformata in una logica, come negli esempi di 4.4; occorre prestare attenzione alle insidie delle analogie formali quando è coinvolta la relazione ≤. Consideriamo la seguente dimostrazione booleana di una proprietà di x◦y che formalmente corrisponde alla massimalità dell’intersezione: se z ≤ x e z ≤ y allora z ≤ x ◦ y. Algebricamente, nel senso delle algebre di Boole, se z ◦ (−x) = 0 e 11 Si vede in particolare che le leggi logiche dimostrate per il linguaggio proposizionale costruito astrattamente sulle lettere, valgono anche per proposizioni contententi variabili. 57 z ◦ (−y) = 0 allora z ◦ (−x) + z ◦ (−y) = 0 z ◦ (−x + −y) = 0 z ◦ −(x ◦ y) = 0 z ≤ x ◦ y. Si conclude quindi correttamente che z ≤x∧z ≤y →z ≤x◦y vale in tutte le algebre di Boole. Poiché sappiamo che ≤ corrisponde a →, siamo tentati di scrivere |= (C → A) ∧ (C → B) → (C → A ∧ B), ottenendo in tal modo la versione corrispondente della massimalità della congiunzione. Ma questo passaggio non è corretto. Infatti se interpretiamo direttamente la legge booleana z ≤ x ∧ z ≤ y → z ≤ x ◦ y nell’algebra delle proposizioni dobbiamo scrivere [C] ≤ [A] ∧ [C] ≤ [B] → [C] ≤ [A ∧ B], che equivale a se [C → A] = 1 e [C → B] = 1 allora [C → A ∧ B] = 1, o se |= C → A e |= C → B allora |= C → A ∧ B. Questa affermazione è diversa e più debole di quella voluta (spiegare perché). Per ricavare booleanamente la legge della massimalità della congiunzione ci sono due strade. Bisogna dimostrare che è uguale a 1 l’elemento booleano corrispondente alla proposizione in questione; siccome essa contiene il condizionale, una possibilità è quella di eliminare il condizionale a favore di altri connettivi booleani, quindi ad esempio di dimostrare che −((−z + x) ◦ (−z + y)) + (−z + x ◦ y) = 1; 58 ma (−z + x) ◦ (−z + y)) = −z + x ◦ y per la proprietà distributiva, quindi ci si riduce a −a + a = 1, che è vero. Altrimenti, si può associare anche al connettivo → un’operazione booleana (non un’asserzione quale è x ◦ (−y) = 0), come per negazione, congiunzione e !!! disgiunzione. L’operazione binaria x ⇒ y associata12 a → è introdotta come ci si aspetta con la definizione x ⇒ y = −x + y. Si ha che x ⇒ y = 1 se e solo se x ≤ y (esercizio). La legge proposizionale |= (C → A) ∧ (C → B) → (C → A ∧ B) si ottiene dimostrando che ((z ⇒ x) ◦ (z ⇒ y)) ⇒ (z ⇒ (x ◦ y)) = 1 nel seguente modo: (z ⇒ x) ◦ (z ⇒ y) = (−z + x) ◦ (−z + y) = −z + (x ◦ y) =z ⇒x◦y quindi (z ⇒ x) ◦ (z ⇒ y) = z ⇒ (x ◦ y). Ma si noti che se a = b allora a ≤ b e quindi a ⇒ b = 1, e anche b ⇒ a = 1. Quindi risulta dalla dimostrazione anche il viceversa, e in effetti |= (C → A) ∧ (C → B) ↔ (C → A ∧ B). Le mutue relazioni illustrate tra insiemi, algebre di Boole e proposizioni che secondo gli assiomi valgono per le proposizioni scritte con i connettivi ¬, ∧, ∨ si estendono a tutte le proposizioni che contengono gli altri connettivi che sono definibili in termini di questi, come ⊕, →, ↔. 12 Questo è il motivo per cui non usiamo questo segno per indicare l’implicazione |= A → B, che booleanamente corrisponde all’asserzione x ≤ y. 59 5 Relazioni 5.1 Prodotto cartesiano Un’operazione su insiemi diversa, e in un certo senso più importante, di quelle booleane è il prodotto cartesiano di due insiemi. Si indica hx, yi la coppia ordinata di x e y, e x e y si chiamano rispettivamente prima e seconda componente di hx, yi. La coppia ordinata è ben diversa dalla coppia non ordinata {x, y}, per cui vale {x, y} = {y, x} e non ha senso parlare di primo o secondo elemento. Invece hx, yi 6= hy, xi a meno che non sia x = y; inoltre hx, yi = hz, ui se e solo se x = z e y = u1 . Il prodotto cartesiano di X e Y è X × Y = {hx, yi | x ∈ X e y ∈ Y }. L’operazione × è diversa da quelle booleane in quanto se anche X ⊆ U e Y ⊆ U , X × Y non è un sottoinsieme di U ; è un insieme di elementi strutturati, in generale un insieme più ricco; se ad esempio U è la retta numerica2 , U × U è il piano (cartesiano), dove ogni punto è individuato dalle sue due coordinate, che sono le due componenti della coppia, e sono dette ascissa la prima componente, ordinata la seconda. Le coppie hx, xi formano la diagonale di U . Esempio Se X è {a, b, c, . . . , h} e Y è {1, 2, 3, . . . , 8}, X × Y si può identificare con la scacchiera. Se X e Y sono due insiemi finiti, il numero di elementi di X × Y è il prodotto del numero di elementi di X e del numero di elementi di Y , da cui il nome. Il prodotto cartesiano di due insiemi non è commutativo3 . 1 Non spieghiamo l’artificio con cui si definisce la coppia ordinata; si ricordi tuttavia che x e y non sono elementi di hx, yi, e infatti si chiamano componenti, o proiezioni. 2 Con “retta numerica” si intende di solito l’insieme dei numeri reali; tuttavia a seconda del contesto può anche significare un altro sistema numerico. Ricordiamo che gli insiemi dei numeri naturali, interi, razionali e reali si indicano usualmente con N, Z, Q, R. Se la retta numerica è N o Z, il piano è il reticolo infinito dei punti a coordinate naturali, o intere. 3 Non è neanche associativo, anche se X × (Y × Z) e (X × Y ) × Z possono essere messi in corrispondeza biunivoca e identificati; quindi con una opportuna definizione delle terne hx, y, zi si può definire il prodotto a tre fattori X × Y × Z, e anche quello a n fattori con le n-uple come elementi. 60 Il prodotto X ×X si indica anche con X 2 , e X · · × X} con X n , insieme | × ·{z n delle n-uple di elementi non necessariamente distinti di X. 5.2 Relazioni Un sottoinsieme di un insieme X × Y si chiama anche relazione tra X e Y . !!! Se X = Y una relazione R ⊆ X × X si dice anche relazione in X. La rappresentazione grafica usuale delle relazioni è quella per mezzo di un diagramma cartesiano, come il seguente: YO · · · · · · · 2· · •· · · · · · · · · · · · •· · · •· · · · · · 1 · · · •· · · · · · · · •· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·/ X dove X = {0, . . . , 8} e Y = {0, . . . 9} e la relazione è {hx, yi | y = 2x}. Se gli insiemi sono infiniti, se ne può indicare solo una porzione; ad esempio la diagonale · · · · · · · · •· · · · · · · · •· · · · · · · · •· · · · · · · · •· · · · ZO · · · · •· · · · · · · · •· · · · •· · · · · · · · · · · •· · · · · · · · •· · · · ·/Z · · · · rappresenta la relazione {hx, yi ∈ Z × Z | x = y } solo in una regione limitata del piano a coordinate intere, ma si intende che va estesa uniformemente 61 all’infinito. Esempi La relazione di paternità è una relazione nell’insieme del genere umano, l’insieme di tutte le coppie hx, yi dove x è un maschio che ha generato, e y uno dei suoi figli. La relazione di discendenza genealogica nell’insieme del genere umano è l’insieme di tutte le coppie hx, yi dove x è un antenato (maschile o femminile) di y. La relazione di divisibilità4 {hx, yi ∈ N × N | x | y } tra numeri naturali è rappresentata, nell’area limitata disegnata, dal diagramma: NO · · · · · · · · · · •· •· •· •· •· •· •· •· •· •· · •· · •· · •· · •· · •· •· · · •· · · •· · · •· · •· · · · •· · · · •· · · · · •· · · · · •· · · · •· · · · · · •· · · •· · · · · · · •· · •· · · · · · · · •· •· · · · · · · · · •· /N La relazione {hx, yi ∈ Z × Z | x = y 2 } è parzialmente rappresentata da 4 Con x | y indichiamo che esiste uno z tale che xz = y, e diciamo che x divide y o è un divisore di y o che y è divisibile per x, o y è un multiplo di x. Con questa definizione x | 0 perché x0 = 0, mentre escludiamo 0 | 0, che pure rientrerebbe nella definizione, perché quando si introduce la divisione si vuole l’uncità del quoziente z in xz = y, mentre 0z = 0 per ogni z. 62 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ZO · · · · · •· · · · · · · · · · •· · • · · · · · · · · · · · · · · · · · · · · · · · · · · · · · •· · · · •· · · · · · · · · ·/Z · · · · · La relazione {hx, yi ∈ Z × Z | xy = 4} è un insieme finito i cui elementi sono tutti indicati nel grafico: · · · · · · · · · · · · · · · · · •· · · · · · · · · · · · · · · · · · · · · · · •· · · · · · · · · · · · · •· · ZO · · · · · · · · · · · · •· · · · · · · · · · · · · •· · · · · · · · · · · · · · · · · · · · · · · •· · · · · · · · · · · · · · · · · · /Z mentre {hx, yi ∈ Q × Q | xy = 4} è un insieme infinito; alcuni suoi punti5 sono indicati nel grafico: 5 Le coppie ordinate che sono elementi di una relazione si chiamano anche punti, in analogia ai punti del piano. 63 · · · · · · · · · · · · · · · · · •· · · · · · · · · · · · · · · · · · · · · · · · · · · ••· · · ·•· · · •· · · · QO · · · · · · · · · · · · · · •· · · ·•• · · · •· · · · •· · · · · · · · · · · · · · · · · · · · · · · · · · · •· •· · · · · · · · · · · · · /Q Si dice talvolta che {hx, yi ∈ Q × Q | xy = 4} e {hx, yi ∈ Z × Z | xy = 4} sono la stessa relazione, {hx, yi | xy = 4} considerata una volta in Q e una volta in Z. Tale modo di esprimersi non è corretto (al massimo, la seconda è una restrizione della prima), ancorché diffuso e innocuo, una volta che si abbiano le idee chiare: uguale è la formula xy = 4 che definisce le due relazioni, ma le relazioni in sé sono due insiemi diversi. Spesso, negli insiemi finiti soprattutto, perché gli insiemi infiniti trattabili sono solo quelli definibili, non c’è alcuna formula definitoria. Ad esempio, se U = {0, 1, . . . , 9}, l’insieme {h2, 4i, h2, 6i, h2, 8i} è una relazione in U . L’unico modo di caratterizzarla è quella di elencare le sue coppie. Considerare una relazione solo come l’insieme delle coppie di individui che stanno nella relazione stessa, e non la definizione (la proprietà che lega le componenti delle coppie), significa trattare le relazioni dal punto di vista estensionale. Talvolta come notazione invece di scrivere che hx, yi ∈ R si scrive anche R(x, y), o anche x R y. 5.2.1 Esercizi 1. Disegnare in un diagramma cartesiano le relazioni (o parte di esse): {hx, yi ∈ N × N | x2 + y 2 < 20} {hx, yi ∈ Z × Z | x2 + y 2 < 20} {hx, yi ∈ N × N | x < 6 ∧ y < 4}. 2. Abbiamo visto esempi di relazioni finite e infinite; come è {hx, yi ∈ 64 Z × Z | xy = 12 }? 5.3 Relazioni d’ordine Data una relazione R ⊆ X × Y si chiama dominio di R l’insieme dom(R) = {x ∈ X | esiste un y ∈ Y tale che hx, yi ∈ R } ⊆ X e si chiama immagine l’insieme im(R) = {y ∈ Y | esiste un x ∈ X tale che hx, yi ∈ R } ⊆ Y . Se R è una relazione in U si ha sia dom(R) ⊆ U sia im(R) ⊆ U . L’unione dom(R) ∪ im(R) si chiama anche campo di R e si denota campo(R)6 . Esempio Nella relazione di paternità il dominio è l’insieme di tutti gli uomini che hanno generato, l’immagine l’insieme di tutti gli uomini e tutte le donne7 . Le relazioni si distinguono e si classificano in base ad alcune proprietà di cui possono o no godere. Una relazione R in un insieme U soddisfa la proprietà riflessiva se per ogni x ∈ campo(R) hx, xi ∈ R. Invece si dice antiriflessiva se per ogni x ∈ campo(R) hx, xi 6∈ R. Una relazione R in un insieme U soddisfa la proprietà transitiva se per ogni x, y, z ∈ campo(R), se succede che hx, yi ∈ R e hy, zi ∈ R allora anche hx, zi ∈ R. Una relazione R in un insieme U soddisfa la proprietà simmetrica se per ogni x e y ∈ campo(R), se succede che hx, yi ∈ R allora anche hy, xi ∈ R. Una relazione è simmetrica se è uguale alla sua simmetrica (nel piano, rispetto alla diagonale) che si ottiene scambiando ogni coppia hx, yi con hy, xi. Invece una relazione R si dice antisimmetrica se hx, yi ∈ R e x 6= y implicano hy, xi 6∈ R, o in modo equivalente, per contrapposizione, se hx, yi ∈ R e hy, xi ∈ R implicano x = y. Esempi La relazione di paternità è antiriflessiva e non è transitiva, ed è antisimmetrica. La relazione di discendenza è transitiva. 6 La notazione non è standard. Qualcuno può non essere d’accordo sul caso critico di Adamo ed Eva, se ci crede; non consideriamo i problemi della clonazione. 7 65 Le relazioni {hx, yi | xy = 4} e {hx, yi | x = y} sono simmetriche. La relazione {hx, yi | x = y 2 } non lo è. La relazione di conseguenza logica, nell’insieme delle proposizioni, è riflessiva (legge dell’identità) e transitiva (transitività del condizionale). Un tipo importante di relazioni è quello costituito dalle relazioni d’ordine. !!! Una relazione R in un insieme U si chiama relazione d’ordine se soddisfa le proprietà riflessiva, transitiva e antisimmetrica per gli elementi nel campo(R). Si dice anche che R è un ordine in U , un ordine del campo(R). Per le relazioni d’ordine si suole usare il simbolo ¹; le condizioni a cui deve soddisfare ¹ sono dunque x¹x x¹y∧y ¹z →x¹z x ¹ y ∧ y ¹ x → x = y. Se a queste si aggiunge la condizione che due elementi qualunque siano confrontabili: x¹y∨y ¹x per ogni x, y ∈ campo(¹), che si chiama anche condizione di connessione, allora ¹ è un ordine totale di campo(¹). Altrimenti, se non è verificata la condizione di connessione, si parla di ordine parziale. Un insieme U si dice totalmente, o parzialmente ordinato, se esiste una relazione ¹ in U con campo(¹) = U che è un ordine totale o rispettivamente parziale. Un insieme ordinato si indica spesso con la coppia hU, ¹i, che mette in evidenza la relazione d’ordine. Esempi L’insieme N con la relazione ≤ è totalmente ordinato. L’insieme {0, 1, . . . n} con la relazione ≤ è totalmente ordinato. La relazione ⊆ nell’insieme dei sottoinsiemi di U è un ordine parziale. Un albero è un insieme parzialmente ordinato. Un ramo di un albero è un insieme totalmente ordinato, e chiuso verso il basso8 . 8 Questo significa che se x appartiene al ramo e y ¹ x anche y appartiene al ramo. 66 Dato un ordine ¹ si può sempre introdurre una nuova relazione ≺ con la definizione x ≺ y ↔ x ¹ y ∧ x 6= y, che risulta antiriflessiva, antisimmetrica e transitiva. Viceversa, data una relazione ≺ antiriflessiva, antisimmetrica e transitiva, si può definire x ¹ y ↔ x ≺ y ∨ x = y e si ha una relazione d’ordine (si veda 7.3). Un maggiorante di x - rispetto a un ordine hU, ¹i - è un elemento y ∈ U tale che x ¹ y. Il maggiorante è stretto, o proprio, se x 6= y. Un minorante di x è un elemento y ∈ U tale che y ¹ x. Il minorante è stretto, o proprio, se x 6= y. Dato un insieme totalmente o parzialmente ordinato hU, ¹i, un elemento x ∈ U si dice minimo - rispetto all’ordine - se x ¹ y per ogni y ∈ U . Si dice massimo se y ¹ x per ogni y ∈ U . Dato X ⊆ U , un minimo di X è un elemento x ∈ X tale che x ¹ y per ogni y ∈ X; simmetricamente per il massimo. Il minimo di un insieme X è unico; analogamente il massimo. Dato un insieme parzialmente ordinato hU, ¹i, un elemento x ∈ U si dice minimale - rispetto all’ordine - se non ha minoranti propri. Si dice massimale se non ha maggioranti propri. Se X ⊆ U , un elemento minimale di X è un elemento x ∈ X tale che per nessun y ∈ X, y 6= x si ha y ¹ x, cioè che non ha minoranti propri appartenenti a X; simmetricamente per un elemento massimale. Gli elementi minimali o massimali non sono necessariamente unici. Esempi La relazione d’ordine totale ≤ nell’insieme dei numeri naturali ha un minimo, nessun massimo. Negli altri insiemi numerici degli interi, dei razionali e dei reali9 ≤ è un ordine totale senza né minimo né massimo. La relazione d’ordine parziale ⊆ nell’insieme dei sottinsiemi di un insieme U ha un massimo U e un minimo ∅. Nell’insieme dei sottoinsiemi non vuoti di U esistono tanti elementi minimali, gli {x}, quanti sono gli elementi x ∈ U . Nell’insieme di tutti gli insiemi contenuti sia in X sia in Y l’intersezione X ∩ Y è il massimo. In generale, in un’algebra di Boole, la relazione {hx, yi | x ◦ −y = 0} è un ordine parziale con minimo 0 e massimo 1. 9 I numeri complessi invece non possono essere ordinati in modo che la relazione d’ordine sia compatibile con le operazioni, ad esempio nel senso che se x ¹ y allora x + z ¹ y + z. 67 Dato un insieme X ⊆ campo(¹), un elemento x ∈ U , anche non appartenente a X, si dice maggiorante di X se y ¹ x per ogni y ∈ X; simmetricamente per il minorante. Se esiste il minimo dell’insieme dei maggioranti di X, questo elemento di U si chiama estremo superiore di X; il massimo dell’insieme dei minoranti, se esiste, si chiama estremo inferiore di X. √ Esempio 2 è in R l’estremo superiore dell’insieme {x ∈ Q | x2 < 2}. Tale insieme non ha estremo superiore in Q. Un ordine si dice discreto se per ogni elemento x che abbia maggioranti propri esiste un elemento z, che si può chiamare successore immediato, tale che x ≺ z e per nessun v sia x ≺ v ≺ z, e per ogni elemento x che abbia minoranti propri esiste un elemento y, che si può chiamare predecessore immediato, tale che y ≺ x e per nessun u sia y ≺ u ≺ x. t y t x t z t t Esempio L’ordine dei numeri naturali e quello dei numeri interi sono ordini discreti. Un ordine si dice denso se dati due qualunque elementi distinti x e y, con x ≺ y, esiste uno z tale che x ≺ z ≺ y. Esempio L’ordine dei razionali e quello dei reali sono ordini densi. Una relazione d’ordine totale ¹ di un insieme U si dice un buon ordine se ogni X ⊆ U non vuoto ha minimo. Un insieme con un buon ordine si dice bene ordinato. Esempi Tipici insiemi bene ordinati sono {0, . . . , n} con la relazione ≤ e l’insieme N = {0, . . . , n, . . . } con la stessa relazione. L’insieme degli interi non è bene ordinato da ≤. L’insieme dei razionali non è bene ordinato da ≤. Il fatto che l’insieme dei naturali sia bene ordinato significa che al di là della catena formata da 0 e dal successore di 0, e dal successore del successore di 0 e cosı̀ via, non ci sono altri elementi, come sarebbe ad esempio in una struttura del genere: t0 t t t t t t 68 s s s s r qq t e questo è importante per le proprietà dei naturali che studieremo nel paragrafo 15. Se al di là di tutti i numeri raggiungibili da 0 ci fosse ancora ad esempio una struttura ordinata come quella degli interi, cun una catena discendente 0 t t t t t t t s s s s r qq qq q q r r s l’insieme non sarebbe bene ordinato; il sottoinsieme formato dalla catena discendente da destra non avrebbe minimo. 5.4 Relazioni di equivalenza L’essenziale sulle relazioni di equivalenza è stato detto a proposito dell’algebra delle proposizioni. Ricordiamo che una relazione R in un insieme U si dice una equivalenza se essa è riflessiva, simmetrica a transitiva, vale a dire, per gli elementi di campo(R): xR x xR y → yR x xR y ∧ yR z → xR z. Non ci sarebbe bisogno di richiedere la riflessività in quanto essa è conseguenza delle altre due: infatti xR y ∧ yR x → xR x, quindi basta che x sia in relazione R con un elemento qualsiasi10 perché xR x. Tuttavia si menziona la riflessività per la sua importanza. Esempi 1. La relazione di uguaglianza è una equivalenza. 2. Nell’insieme U = {a, b, c, d, e} la relazione R = {ha, ai, hb, bi, hc, ci, hd, di, he, ei, ha, bi, hb, ai, ha, ci, hc, ai, hb, ci, hc, bi, hd, ei, he, di} 10 Se c’è solo x nel campo di R, allora deve già essere xR x. 69 è una relazione di equivalenza, rappresentata dal seguente diagramma11 . UO e· d· c•· b•· a•· · · •· •· · · •· •· •· •· · · •· •· · · •· •·c · ·e/ U b d 3. Nel dominio degli interi, la relazione di congruenza x ≡ y (mod p), p ≥ 2, che vale se la differenza x − y è divisibile per p, è una relazione di equivalenza12 . 4. La relazione di parallelismo tra rette in un piano è una relazione di equivalenza. 5. La relazione di similitudine tra triangoli è una equivalenza. 6. La relazione di equivalenza logica è una equivalenza. Data una relazione di equivalenza R in un insieme U = campo(R), si definisce per ogni x ∈ U la classe di equivalenza di x come [x] = {y ∈ U | xR y } e x si chiama rappresentante della classe [x]. Date due classi [x] e [y ], queste o sono uguali (hanno gli stessi elementi) o sono disgiunte. Se xR y, allora ogni z ∈ [x], essendo xR z, è anche zR y, quindi z ∈ [y], e viceversa. Allora x e y sono due diversi rappresentanti della stessa classe. Se x non sta nella relazione R con y, allora non ci può essere uno z ∈ [x] ∩ [y ], altrimenti si avrebbe zR x e zR y, e quindi xR y. L’insieme U è ripartito dalla relazione di equivalenza R in una famiglia di insiemi disgiunti, di cui U è l’unione. Una tale famiglia si chiama appunto partizione di U . 11 12 Il significato delle linee tratteggiate sarà spiegato in seguito. x ≡ y (mod p) si legge“x congruo a y modulo p”. 70 Esempi Per la relazione dell’esempio 2 di sopra, [a] = [b] = [c] = {a, b, c} e [d] = [e] = {d, c}. Nel grafico si vedono i due agglomerati di punti che formano le due classi disgiunte. Per la relazione di congruenza x ≡ y (mod 2) ci sono due classi, quella dei numeri pari e quella dei numeri dispari. L’insieme {[x] | x ∈ U } delle classi di equivalenza di un insieme U , rispetto alla relazione R, è detto il quoziente di U rispetto ad R, ed è indicato con U/R . Il quoziente dell’insieme dei numeri naturali rispetto a x ≡ y (mod 2) è l’insieme {0, 1}. Se si definiscono operazioni e relazioni nel quoziente, a partire da operazioni e relazioni tra gli elementi di U , occorre sempre fare attenzione che siano bene definite, vale a dire che, nel caso di operazioni ad esempio, la classe risultante non dipenda dalla scelta dei rappresentanti delle classi argomento. Esempio Nel quoziente degli interi rispetto alla relazione x ≡ y (mod p), che si indica Zp , si definisce la somma con [x] +p [y] = [x + y], e analogamente il prodotto, rendendo possibile la cosiddetta aritmetica modulare. L’operazione13 +p è ben definita perché se [x1 ] = [x] e [y1 ] = [y ], allora x = mp+r, y = np+s e x1 = m1 p+r e y1 = n1 p+s; quindi (x+y)−(x1 +y1 ) = (m + n − m1 − n1 )p è divisibile per p e x + y e x1 + y1 appartengono alla stessa classe. Nella congruenza (mod 2), in Z2 , 1 +2 1 = 0 corrisponde al fatto che la somma di due dispari qualunque è pari. 5.5 Funzioni Una relazione R si dice funzionale se per ogni x ∈ dom(R) esiste un solo y tale che hx, yi ∈ R. Una relazione funzionale R tra X e Y si dice anche una funzione tra X e Y , o una funzione da dom(R) in Y . Se si parla di una funzione da X in Y s’intende che il suo dominio è tutto X. 13 Usiamo questo segno per distinguere la somma delle classi dalla somma degli interi. 71 Per le funzioni si usano di solito i simboli f, g, . . . . Se f è una funzione da X in Y si scrive anche f : X −→ Y . Se hx, yi ∈ f , si scrive y = f (x) e si dice che y è il valore di f per l’argomento x, o l’immagine di x mediante f . Sinonimi per “funzione” sono “mappa” o “corrispondenza”. Si dice pure che y corrisponde a x o che è il valore associato all’argomento x, e talvolta si scrive f : x 7→ y per y = f (x). Se Z ⊆ X, l’immagine di Z mediante f è l’insieme delle immagini f (y), per ogni y ∈ Z: {f (y) | x ∈ Z}. Tale insieme si indica anche con f “Z, non con f (Z), ché Z 6∈ dom(f ). !!! Se y ∈ im(f ), l’insieme {x ∈ X | f (x) = y} si chiama controimmagine di y e si indica f −1 (y). f −1 (y) è un insieme, e in generale con più di un elemento. Un modo abbreviato di presentare una funzione è quello di scrivere la formula che definisce la relazione, ad esempio si parla della funzione y = x2 , ma occorre allora precisare a parte il dominio e l’immagine della funzione. Una funzione f : X −→ Y si dice iniettiva o uno-uno se a elementi diversi corrispondono valori diversi: x 6= y → f (x) 6= f (y). Una funzione iniettiva si indica talvolta con la notazione: f : X ,→ Y . Se una funzione f è iniettiva, per ogni y ∈ im(f ) f −1 (y) ha un solo elemento x che si chiama lui controimmagine di y. Viceversa, se ogni f −1 (y) ha un solo elemento, per y ∈ im(f ), f è iniettiva. Una funzione f : X −→ Y si dice suriettiva, o sopra se Y = im(f ), ovvero se per ogni y ∈ Y esiste almeno un x ∈ X tale che y = f (x). Esempi La funzione f : Z −→ Z x 7→ 2x è iniettiva, non suriettiva. La funzione 72 f : Q −→ Q x 7→ 2x è iniettiva e suriettiva. La funzione f : Q −→ Q x 7→ x2 non è iniettiva e non è suriettiva, cosı̀ come f :Rp −→ R x 7→ |x|. La funzione f : R −→ R x 7→ x3 − x. invece non è iniettiva ma è suriettiva. La corrispondenza definita da x 7→ x1 , o dalla formula y = una funzione tra Q e Q il cui dominio è Q \ {0}: 1 , x definisce f : Q \ {0} −→ Q x 7→ x1 è iniettiva e non è suriettiva. La funzione f : Q \ {0} −→ Q \ {0} x 7→ x1 è iniettiva e suriettiva. Una funzione f : X −→ Y che sia iniettiva e suriettiva si dice biiettiva, o una biiezione tra X e Y o una corrispondenza biunivoca tra X e Y . Se X = Y si parla di una biiezione di X in sé. Esempi La funzione f : Q −→ Q x 7→ 2x 73 è una biiezione di Q in se stesso. La funzione f : Z −→ Z x 7→ 2x è invece solo una iniezione di Z in sé. La funzione f : Q \ {0} −→ Q \ {0} x 7→ x1 è una biiezione di Q \ {0} in sé.. La funzione che a ogni i < n associa i + 1 e a n associa 0 è una biiezione di {0, 1, . . . , n} in sé. Le biiezioni di un insieme finito in sé si chiamano permutazioni dell’insieme. Il concetto di “funzione” è molto comodo per definire o collegare diversi altri concetti matematici; abbiamo visto quello di “permutazione”; le sequenze ha0 , . . . , an i di elementi di X si possono definire come funzioni da {0, 1, . . . , n} in X; le disposizioni di X a n elementi, se X ha più di n elementi, sono le funzioni iniettive da {0, 1, . . . , n} in X; un insieme {ai }i∈I indiciato da I è l’immagine di una funzione da I nell’insieme cui appartengono gli ai ; un sottoinsieme X ⊆ U è anche uguale a c−1 X (1), dove cX è la funzione caratteristica di X, cioè la funzione U −→ {0, 1} definita da ½ cX (x) = 1 0 se x ∈ X se x ∈ 6 X, e cosı̀ via, tutte le nozioni matematiche si possono esprimere in termini insiemistici. Se per una funzione f : X −→ Y il dominio è un prodotto cartesiano X = V × W , allora si dice che la f è una funzione di due variabili, o di due argomenti, e per ogni hv, wi ∈ V × W il valore di f si indica con f (v, w). Analogamente se il dominio è un prodotto di più di due fattori. Per una funzione f di n argomenti il valore della funzione per la n-upla hx1 , . . . , xn i si indica con f (x1 , . . . , xn ). 74 6 Forme normali Dopo aver imparato le definizioni riguardanti la semantica delle proposizioni, e alcune prime tecniche per stabilire in particolare se sono tautologie, sia direttamente con il calcolo del valori di verità sia deducendole da altre con passaggi logici o algebrici booleani, passiamo a porci alcuni problemi metateorici sul linguaggio proposizionale. 6.1 Definibilità dei connettivi Ad ogni proposizione è associata una tavola di verità, come abbiamo visto negli esempi di 3.3.1. Viceversa, data una qualunque tavola di verità, come ad esempio p 0 0 0 0 1 1 1 1 q 0 0 1 1 0 0 1 1 r 0 1 0 1 0 1 0 1 ? 1 1 1 1 0 0 0 0 esiste una proposizione scritta utilizzando soltanto i connettivi ¬, ∧, ∨ che ha quella data come sua tavola di verità associata. La proposizione si costruisce nel seguente modo, appoggiandosi come esempio alla tavola di sopra. Sarà una disgiunzione con tanti disgiunti quante sono nella tavola le righe che hanno il valore 1, quindi A1 ∨ A2 ∨ A3 ∨ A4 ; ogni disgiunto Ai dovrà essere vero solo per l’interpretazione della riga corrispondente; la riga assegna valori 0,1 alle lettere, quindi 1 a certe lettere e 1 alle negazioni di certe altre lettere; una congiunzione è vera se e solo se tutti i congiunti sono veri; Ai potrà quindi essere una congiunzione di tante proposizioni quante sono le colonne di entrata della tavola, nell’esempio 3, e ciascuna di queste proposizioni sarà una lettera o la negazione di quella lettera a seconda che nella riga corrispondente la lettera abbia il valore 1 oppure 0. Quindi (¬p ∧ ¬q ∧ ¬r) ∨ (¬p ∧ ¬q ∧ r) ∨ (¬p ∧ q ∧ ¬r) ∨ (¬p ∧ q ∧ r). 75 Per le proprietà della valutazione della disgiunzione e congiunzione - che una disgiunzione è vera se e solo se almeno un disgiunto è vero, e una congiunzione se e solo se tutti i congiunti sono veri - e della negazione, si può facilmente vedere procedendo al contrario che la tavola associata a questa proposizione è uguale alla tavola data, che era la tavola di p ∨ q → ¬p ∧ (q → r). 2 Il risultato si esprime anche dicendo che tutte le funzioni di verità sono definibili in termini dell’insieme di connettivi {¬, ∧, ∨}, o che questo è un insieme adeguato di connettivi. Questo significa che non si è perso nulla, !!! quanto a capacità espressiva, non ammettendo nell’alfabeto altri connettivi, ad esempio quello per la duplice negazione “né . . . né”; se avessimo introdotto un connettivo ↑ o nor per questa combinazione di proposizioni, con la tavola A 0 0 1 1 B 0 1 0 1 A↑B 1 0 0 0 a posteriori potremmo ora sostituire ogni occorrenza della proposizione p ↑ q con l’equivalente ¬p ∧ ¬q 1 . Vale la pena di notare esplicitamente cosa significa che un simbolo è defini- !!! bile (a differenza ad esempio dalla definibilità di un insieme). Un simbolo di operatore binario • si dice definibile (in termini di altri) se p • q ↔ A(p, q) oppure p • q = A(p, q), a seconda che p • q sia una formula oppure un termine, dove A è un’espressione che non contiene • e contiene solo gli altri simboli o nozioni nei termini dei quali • si dice definito. S’intende che il bicondizionale o l’uguaglianza devono essere validi nel contesto in esame: in logica sarà |= p • q ↔ A(p, q), mentre una uguaglianza p • q = A(p, q) deve essere dimostrata nella relativa teoria, aritmetica o algebra o altro. Analogamente se il numero di argomenti è diverso da 2. Ad esempio in geometria piana per due rette “r//s ↔ r e s non si intersecano”, in aritmetica “x | y ↔ esiste uno z per cui xz = y”, o il 1 Se c’è una sola riga con valore 1, la proposizione costruita come detto sopra è della forma A1 , dove A1 è una congiunzione. Si può dire tuttavia che anche in questo caso la proposizione associata alla tavola è una disgiunzione, pensando che A1 ≡ A1 ∨ A1 76 simbolo di elevamento a quadrato “x2 = x · x”, nell’algebra degli insiemi “X \ Y = X∩ ∼ Y ”. Ma il precedente risultato dice anche che gli stessi connettivi del linguaggio proposizionale sono sovrabbondanti, perché {¬, ∧, ∨} è adeguato, e neanche il più ridotto possibile. Quando un sistema adeguato è minimale, nel senso che nessun suo sottoinsieme proprio è ancora adeguato, si chiama una base, in analogia con le basi degli spazi vettoriali (si vedano gli esercizi). Si ha che p ⊕ q risulta equivalente a (¬p ∧ q) ∨ (p ∧ ¬q), e p → q ≡ (¬p ∧ ¬q) ∨ (¬p ∧ q) ∨ (p ∧ q) e analogamente p ↔ q (esercizio). Ognuna di queste equivalenze comporta l’eliminabilità del connettivo definito, cioè che all’interno di una proposizione una sottoproposizione, ad esempio della forma A → B, può essere rimpiazzata dalla proposizione equivalente (¬A ∧ ¬B) ∨ (¬A ∧ B) ∨ (A ∧ B). 6.1.1 Esercizi 1. Dimostrare che {¬, ∧} e {¬, ∨} sono due basi di connettivi, definendo la disgiunzione nel primo e la congiunzione nel secondo. 2. Dimostrare che {¬, →} è una base di connettivi. 3. Dimostrare che il connettivo “né . . . né” da solo costituisce una base, definendo in termini di esso la negazione e la congiunzione. 4. Scrivere la funzione di verità del connettivo ↓ o nand, “non entrambe”, o “non sia . . . sia”, e dimostrare che costituisce da solo una base di connettivi. 5. Esaminare tutte le tavole di verità a una entrata, e spiegare perché non esiste un connettivo per “è necessario che”. 6. Discutere se è possibile ripetere la trattazione di questo paragrafo con ⊕ al posto di ∨ (associare a ogni tavola una proposizione con ¬, ∧, ⊕ che abbia quella data come sua tavola di verità). L’insieme {¬, ∧, ⊕} è adeguato? E {¬, ⊕}? E {⊕, ∧}? 6.2 Forme normali disgiuntive La proposizione costruita a partire da una tavola di verità nel modo sopra descritto ha una forma particolare. Si chiami letterale una proposizione che 77 sia o una lettera p, letterale positivo, o la negazione di una lettera ¬p, letterale negativo. La proposizione associata alla tavola ha dunque la forma di una disgiunzione di congiunzioni di letterali. Una tale forma di chiama forma normale disgiuntiva. Poiché è evidente che Osservazione 6.2.1 Per ogni A e B che contengano le stesse lettere, A ≡ B se e solo se A e B hanno la stessa tavola di verità si può concludere che Teorema 6.2.1 Per ogni proposizione A esiste una proposizione con le stesse lettere che è in forma normale disgiuntiva ed è logicamente equivalente ad A. Dimostrazione. Come nell’esempio di sopra, data A si calcoli la sua tavola, quindi si costruisca la proposizione in forma normale disgiuntiva associata alla tavola. Nel caso che la tavola di A non abbia alcun 1 nella colonna dei valori, quindi che A sia una contraddizione, la proposizione equivalente in forma normale disgiuntiva si può scrivere nella forma (¬p ∧ p) ∨ . . . ∨ (¬q ∧ q) come disgiunzione di contraddizioni elementari, una per ogni lettera di A. 2 Anche una proposizione come ¬p ∨ q è in forma normale disgiuntiva, perchè il concetto di congiunzione e disgiunzione è usato ovviamente in senso generalizzato, ammettendo due o più componenti, o anche una sola2 . Le proposizioni in forma normale disgiuntiva associate a tavole di proposizioni non contraddittorie hanno l’ulteriore proprietà che in ogni disgiunto compaiono le stesse lettere, e che in ogni congiunzione ogni lettera compare una sola volta, o positiva o negata3 . Qualche volta si usa l’aggettivo ulteriore regolare per indicare questa caratteristica delle forme normali. Una proposizione in forma normale disgiuntiva regolare permette di leggere direttamente i modelli della proposizioni, uno per ogni disgiunto: (¬p ∧ q) ∨ (p ∧ ¬q) 2 3 Vedi anche la nota 1 del paragrafo. Questa disgiunzione nel testo è esclusiva. 78 ha due modelli, i1 (p) = 0 e i1 (q) = 1, e i2 (p) = 1 e i2 (q) = 0. Tale possibilità di lettura sussiste peraltro anche per le forme normali disgiuntive non regolari, considerando però le interpretazioni come definite in modo arbitrario sulle lettere che non occorrono in alcuni disgiunti: (¬p ∧ q) ∨ p ha tre modelli: da ¬p ∧ q viene i1 (p) = 0 e i1 (q) = 1, e da p viene i(p) = 1, che però ne riassume due: i2 (p) = 1 e i2 (q) = 1, e i3 (p) = 1 e i3 (q) = 0. Qualche volta, sempre per le forme non regolari, disgiunti diversi hanno modelli in comune; e ovviamente se in una congiunzione occorre sia una lettera sia la sua negazione quella congiunzione non ha modelli. 6.3 Forme normali congiuntive Un altro modo di associare a una tavola una proposizione scritta solo con i connettivi ¬, ∧ e ∨ è il seguente, dove sono scambiati i ruoli di 0 e 1 e di congiunzione e disgiunzione: si cerca ora una proposizione che sia falsa esattamente nei casi prescritti dalla tavola data. In riferimento allo stesso esempio di prima, la proposizione deve essere falsa solo ed esattamente in corrispondenza alle ultime quattro righe della tavola, sarà perciò una congiunzione A5 ∧ A6 ∧ A7 ∧ A8 , e ogni Ai sarà la disgiunzione di tre letterali, ogni letterale positivo o negativo a seconda che nella riga in questione la !!! lettera abbia il valore 0 oppure 1. Quindi: (¬p ∨ q ∨ r) ∧ (¬p ∨ q ∨ ¬r) ∧ (¬p ∨ ¬q ∨ r) ∧ (¬p ∨ ¬q ∨ ¬r). Per confermare che questa proposizione ha la tavola data come sua tavola di verità occorre questa volta ricordare che una congiunzione è falsa se e solo se una delle proposizioni congiunte è falsa, e che una disgiunzione è falsa se e solo se tutte le proposizioni disgiunte sono false. Una proposizione che sia una congiunzione di disgiunzioni di letterali si dice in forma normale congiuntiva. Esempio La forma normale congiuntiva di p → q, applicando il procedimento descritto, è ¬p ∨ q, che è forma congiuntiva, se si considera, come si considera, la congiunzione in senso generalizzato; ¬p ∨ q è dunque in forma sia congiuntiva sia disgiuntiva. Come sopra, risolvendo a parte anche il caso in cui nella tavola non ci siano 0, si ha: 79 Teorema 6.3.1 Per ogni proposizione A esiste una proposizione con le stesse lettere che è in forma normale congiuntiva ed è equivalente ad A. Le forme normali, non necessariamente regolari, sono convenienti per verificare in modo efficiente (alla sola scansione e ispezione della lista) la validità !!! logica o l’insoddisfacibilità, ma ciascuna forma è adeguata solo per una delle due proprietà. Teorema 6.3.2 Una proposizione in forma normale congiuntiva è una tautologia se e solo se in ogni sua clausola c’è una lettera che occorre sia positiva sia negata. Una proposizione in forma normale disgiuntiva è insoddisfacibile se e solo se in ogni suo disgiunto c’è una lettera che occorre sia positiva sia negata. Dimostrazione. Per le forme congiuntive, una clausola in cui occorra una lettera e la negazione della stessa lettera è una tautologia, e una congiunzione è una tautologia se e solo se lo sono le sue componenti. Una clausola in cui non si verifichi la presenza di una lettera e della sua negazione può assumere il valore 1 se a tutti i letterali si assegna il valore 1 interpretando a 1 le lettere dei letterali positivi e a 0 le lettere dei letterali negativi. Un ragionamento analogo vale per le forme disgiuntive. 2 Si noti che due proposizioni equivalenti non debbono necessariamente avere le stesse lettere, ad esempio q ∧ (¬p ∨ p) è equivalente a q, e ¬p ∨ p è equivalente a q → q (sono tutt’e due tautologie); quando si controlla che per ogni interpretazione le due proposizioni hanno lo stesso valore si considerano interpretazioni definite sull’insieme più ampio di lettere, ma si possono trascurare in una proposizione i valori delle lettere non occorrenti. Le proposizioni in forma normale che si ottengono da una tavola non sono sempre le più semplici possibili. Se ad esempio il criterio che interessa è quello della lunghezza, la forma ¬p ∨ q, è preferibile alla forma normale disgiuntiva regolare che si ottiene dalla tavola del condizionale. A ¬p ∨ q si può passare dalla forma normale disgiuntiva regolare (¬p ∧ ¬q) ∨ (¬p ∧ q) ∨ (p ∧ q) con i seguenti passaggi: (¬p ∧ ¬q) ∨ (¬p ∧ q) ∨ (p ∧ q) (¬p ∧ (¬q ∨ q)) ∨ (p ∧ q) ¬p ∨ (p ∧ q) (¬p ∨ p) ∧ (¬p ∨ q) ¬p ∨ q 80 applicando le leggi distributive e la semplificazione delle tautologie (si noti che la seconda proposizione non è in forma normale). Come mostra l’esempio, esistono quindi diverse forme normali disgiuntive (e lo stesso per le congiuntive) equivalenti a una data proposizione; si parlerà perciò solo impropriamente della forma normale disgiuntiva (o congiuntiva) di una proposizione A, ma si userà ugualmente tale dizione, intendendola a meno di equivalenza logica; si chiamerà in tal modo una qualunque forma normale disgiuntiva (o congiuntiva) che sia equivalente ad A4 , e si potrà anche scrivere, se conveniente, dnf(A) (rispettivamente cnf(A)). Il risultato generale che ogni proposizione è equivalente a una proposizione in forma normale disgiuntiva o congiuntiva si può ottenere anche applicando un algoritmo forma normale di trasformazioni successive come nell’esempio di sopra per il condizionale. Il procedimento è il seguente: • eliminare ⊕, ↔ e → • spostare ¬ verso l’interno con le leggi di De Morgan • cancellare le doppie negazioni, con la legge della doppia negazione • cancellare le ripetizioni, con le leggi di idempotenza • applicare ripetutamente le leggi distributive. L’ultima indicazione può sembrare vaga, ma si può rendere più precisa e deterministica. Con i passi precedenti si è ottenuta una proposizione equivalente che è formata a partire da letterali con applicazioni ripetute di ∧ e ∨, anche se non necessariamente nell’ordine che produce una forma normale. Supponiamo di volerla trasformare in forma normale congiuntiva (per la forma normale disgiuntiva il procedimento è lo stesso con scambiati i ruoli di ∧ e ∨). Consideriamo il connettivo principale della proposizione; se è ∧, passiamo alle due sottoproposizioni immediate trasformandole separatamente con il procedimento sotto descritto5 e facendo alla fine la congiunzione delle due 4 Non necessariamente con le stesse lettere, come mostra l’esempio delle due forme normali disgiuntive p ∨ (q ∧ ¬q) ≡ p. 5 L’algoritmo che stiamo presentando è ricorsivo - si veda il paragrafo 15. 81 forme congiuntive cosı̀ ottenute; se è ∨, e la proposizione è della forma A ∨ B, è necessaria qualche preparazione. Se in A non occorresse per nulla ∧, potremmo lavorare su B come detto sotto, dopo aver fatto, per la precisione, lo scambio con B ∨ A. Possiamo allora supporre che A sia della forma C ∧ D, perché se A a sua volta fosse una disgiunzione C ∨ D, potremmo considerare al suo posto l’equivalente C ∨ (D ∨ B) e andare a cercare ∧ in C, oppure in D dopo aver fatto lo scambio con l’equivalente D ∨ (C ∨ B). La proposizione data si trasforma allora nella equivalente (C ∨B)∧(D∨B) e possiamo applicare ricorsivamente il procedimento alle due proposizioni più corte C ∨ B e D ∨ B. Quando procedendo in questo modo si è eliminato il connettivo ∧ a sinistra di B, si passa a lavorare nello stesso modo su B. Esempio Da (p → q) → (r ∨ ¬p) ¬(p → q) ∨ (r ∨ ¬p) ¬(¬p ∨ q) ∨ (r ∨ ¬p) (¬¬p ∧ ¬q) ∨ (r ∨ ¬p) (p ∧ ¬q) ∨ (r ∨ ¬p), che è in forma normale disgiuntiva (p ∧ ¬q) ∨ r ∨ ¬p con due disgiunti unitari r e ¬p. Se invece si vuole la forma normale congiuntiva, si continua con (p ∨ (r ∨ ¬p)) ∧ (¬q ∨ (r ∨ ¬p)) (p ∨ r ∨ ¬p) ∧ (¬q ∨ r ∨ ¬p) che è in forma normale congiuntiva. Esempio Trasformare la forma normale disgiuntiva (p ∧ ¬q) ∨ (¬p ∧ q) in forma normale congiuntiva: (p ∧ ¬q) ∨ (¬p ∧ q) (p ∨ (¬p ∧ q)) ∧ (¬q ∨ (¬p ∧ q)). Il primo congiunto si trasforma in (p ∨ ¬p) ∧ (p ∨ q), 82 il secondo in (¬q ∨ ¬p) ∧ (¬q ∨ q), quindi la proposizione in (p ∨ ¬p) ∧ (p ∨ q) ∧ (¬q ∨ ¬p) ∧ (¬q ∨ q), da cui si possono ancora eliminare le tautologie, ottenendo (p ∨ q) ∧ (¬q ∨ ¬p). . Non è detto che questo procedimento, che ha il merito di far vedere la terminazione del compito, se lo si segue come filo d’Arianna, sia sempre il più efficiente; può essere utilmente integrato con l’applicazione in itinere dell’eliminazione delle ripetizioni, e con l’eliminazione delle tautologie dalle congiunzioni, e della contraddizioni dalle disgiunzioni, ogni volta che sia possibile; sono utili le leggi di assorbimento ed equivalenze come !!! ¬(A → B) ≡ A ∧ ¬B; oppure ci sono scorciatoie come quando, volendo mirare a una forma congiuntiva, si incontra una sottoproposizione della forma (A ∧ B) ∨ (C ∧ B) che conviene rimpiazzare direttamente con (A ∨ C) ∧ B. Le forme normali disgiuntive e congiuntive si trovano ai poli estremi di uno spettro su cui si immagini di collocare le proposizioni misurando la loro distanza con il numero di applicazioni delle proprietà distributive necessarie per passare dall’una all’altra. Se si pensasse di decidere se una proposizione in forma normale disgiuntiva è una tautologia applicando il teorema 6.3.2, dovendola prima trasformare in forma congiuntiva, si affronterebbe un compito non inferiore come complessità a quello di costruire la tavola di verità completa (e forse più rischioso, se fatto a mano). 6.4 Esercizi 1. Scrivere la forma normale congiuntiva e disgiuntiva, usando le tavole di verità, delle seguenti proposizioni: (p ∨ q → r) ∧ ¬p ∧ ¬r ¬p → ¬(q → p) (¬(p → q) ∨ ¬q) → p. 83 2. Per le proposizioni del precedente esercizio, trasformare la forma normale disgiuntiva in quella congiuntiva e viceversa con l’algoritmo forma normale. 3. Scrivere la forma normale disgiuntiva e congiuntiva, usando l’algoritmo forma normale, delle seguenti proposizioni: (p ∨ q) → ¬(p → (q → r)) (p ∨ q) → ¬(p ∧ (q → r)) p → (¬q ∨ p → (r → p)) p ⊕ (¬p ⊕ q) → q. 4. Trasformare le leggi logiche del paragrafo 3.3.3 in forma normale congiuntiva e disgiuntiva. 5. Osservare che la tavola della proposizione p ∨ q → ¬p ∧ (q → r) di 3.3.1 è uguale a quella di ¬p (se questa è estesa a una tavola a tre entrate p, q, r indipendente da q e r) e trasformare in ¬p la sua forma normale disgiuntiva ottenuta dalla tavola. 6. Scrivere ¬p ∨ q → ¬p ∧ q in forma normale disgiuntiva e leggerne i modelli. 7. Verificare, ai fini dell’applicazione delle trasformazioni con le leggi distributive, che è (A ∨ B) ∧ (C ∨ D) ≡ (A ∧ C) ∨ (A ∧ D) ∨ (B ∧ C) ∨ (B ∧ D) e analogamente (A ∧ B) ∨ (C ∧ D) ≡ (A ∨ C) ∧ (A ∨ D) ∧ (B ∨ C) ∧ (B ∨ D). 8. Verificare come si trasforma, applicando le leggi di De Morgan, la negazione di una forma normale congiuntiva (rispettivamente disgiuntiva) in una forma normale disgiuntiva (rispettivamente congiuntiva). 9. Spiegare, utilizzando le leggi di De Morgan e la legge della doppia negazione, perché cnf(A) ≡ ¬dnf(¬A) e dnf(A) ≡ ¬cnf(¬A). L’osservazione fornisce un altro modo per ottenere la forma normale disgiuntiva, o congiuntiva, di una proposizione. Se si vuole ad esempio la forma normale disgiuntiva di A, si può provare a vedere se non sia 84 relativamente facile ottenere cnf(¬A); ottenuta questa, la si nega e si applica De Morgan; spesso si evita cosı̀ l’applicazione ripetuta delle leggi distributive. Errore frequente: lo studente ha trovato dnf(A) e per ottenere cnf(A) !!! nega dnf(A) e applica De Morgan, ricordando malamente l’esercizio 8, perché ottiene sı̀ una forma congiuntiva, ma quella della negazione: cnf(¬A). È forse il residuo dell’idea di premettere due negazioni, usandone una per trasformare dnf in cnf con De Morgan: ¬¬dnf(A), ¬(¬dnf(A)), ¬cnf(¬A). Di quella esterna però ci si dimentica - se si tenesse conto dell’altra negazione, una nuova applicazione di De Morgan riporterebbe a dnf(A). Due negazioni consecutive non possono creare nulla di nuovo. 10. In riferimento alle osservazioni del precedente esercizio, trovare la forma normale disgiuntiva e congiuntiva e confrontare i diversi modi per ottenerle, per le proposizioni (p → q) → (r → ¬p) p ∨ q → ¬p ∨ q p ∨ (q ∧ r) → (¬r → p). 85 7 Dimostrazioni Esaminiamo ora alcune semplici dimostrazioni per mettere in luce quali leggi logiche vengano utilizzate nei vari passaggi - e vedremom che tutte vengono usate, quelle chiamate notevoli - approfittandone per fare una rassegna (incompleta) delle diverse tipologie di argomentazione. Lo scopo di questa trattazione non è quello di invitare a presentare sempre le dimostrazioni con una pignola insistenza sui dettagli, quanto di insegnare ad esporle (a sé e agli altri) attraverso un discorso chiaro e comprensibile; quando si deve eseguire un passaggio logico, invece che un calcolo algebrico, si incontrano spesso difficoltà di espressione, perché si ha a che fare con una materia impalpabile, il linguaggio allo stato puro nelle sue articolazioni sintattiche che sono indipendenti dall’argomento concreto in oggetto; ci si accorge tuttavia con l’esperienza che la formulazione corretta e necessaria è già disponibile per cosı̀ dire in una forma standard - e che non sono molti i tipi di passaggi logici, al contrario sono quasi sempre gli stessi pochi ricorrenti. Non è che nell’esposizione informale si saltino dei passaggi, come talvolta si sente dire, è che si usano spesso forme linguistiche compatte, non familiari a chi non è fluente nel parlare, ma tali forme sono valide, derivate da quelle più semplici, e bisogna imparare ad usarle con disinvoltura dopo averne colto la portata sezionandole su semplici esempi. 7.1 Dimostrazioni dirette Un primo stile, in senso lato, molto frequente, di dimostrazione si chiama dimostrazione diretta, ed è esemplificata dal seguente caso. Consideriamo il teorema che (afferma che) se due numeri sono divisibili per 3, anche la loro somma è divisibile per 3. Il primo passo di formalizzazione consiste nell’indicare due numeri con n ed m, e nello scrivere l’ipotesi Ip. n è divisibile per 3 e m è divisibile per 3 o con un ulteriore passo di formalizzazione Ip. 3|n e 3|m. Un secondo passo consiste nell’espandere la definizione dei concetti in gioco - definizione che ha accompagnato l’introduzione dei simboli; in questo 86 caso quello di divisibilità: Def. 3|n se e solo se n = 3i per qualche i e analogamente: Def. 3|m se e solo se m = 3j per qualche j. Il passo successivo sfrutta l’equivalenza delle definizioni per riformulare l’ipotesi in1 Ip. n = 3i ∧ m = 3j. Usiamo ora una legge che non è propriamente una legge logica dei tipo di quelle che abbiamo finora considerato, ma è una legge dell’uguaglianza che consideriamo universalmente vera in ogni universo (derivabile da quelle già ricordate nel paragrafo 4.2). 2. n = 3i ∧ m = 3j → n + m = 3i + 3j. Da 1 e da 2, con un’applicazione del modus ponens 3. n + m = 3i + 3j. Di qui, si passa a n + m = 3(i + j), con una manipolazione algebrica diretta delle uguaglianze. In verità questo passaggio suppone il riferimento ad un fatto noto, valido nell’universo aritmetico che stiamo considerando, vale a dire la proprietà distributiva: 4. n + m = 3i + 3j → n + m = 3(i + j); è una nuova applicazione del modus ponens a 3 e 4 che fornisce 5. n + m = 3(i + j). Dalla 5 si arriva alla conclusione voluta ripristinando le definizioni, per mezzo di equivalenze, vale a dire scrivendo che, siccome n + m = 3k per qualche2 k, in particolare per k = i + j, allora 3|(n + m), come si doveva concludere.2 1 La scomparsa di “per qualche i” e di “per qualche j”, e la ricomparsa più avanti, rientra nella manipolazione delle variabili, di cui si parlerà nella seconda parte del corso: m, n, i, j sono variabili. 2 Vedi nota precedente. 87 Un’altra possibilità sarebbe stata quella di inserire, dopo 2. n = 3i ∧ m = 3j → n + m = 3i + 3j, subito 4. n + m = 3i + 3j → n + m = 3(i + j) e quindi, con un’applicazione della transitività del condizionale, da 2 e 4 6. n = 3i ∧ m = 3j → n + m = 3(i + j) e la stessa conclusione di prima con il modus ponens da 1 e 6.2 Questo tipo di dimostrazione si chiama diretto, o in avanti , perché procede da proposizioni a proposizioni da esse implicate con l’uso sostanzialmente delle leggi logiche del modus ponens p ∧ (p → q) → q e della transitività del condizionale, o sillogismo ipotetico (p → q) ∧ (q → r) → (p → r), o meglio delle regole associate. Quella del sillogismo ipotetico è p → q, q → r . p→r Anche la legge della distributività del condizionale (p → (q → r)) → ((p → q) → (p → r)), che incontreremo in seguito in altri esempi, si può considerare nella stessa categoria delle regole “in avanti”. Si noti, anche se non entriamo in dettagli sulle proprietà dell’uguaglianza, che tutte le manipolazioni algebriche usuali, le sostituzioni, coinvolgono di fatto appelli al modus ponens applicato a leggi dell’uguaglianza come nella 4 di sopra. In verità non abbiamo neanche segnalato tutti i punti in cui i passaggi erano di tipo logico, e non aritmetico o riguardanti l’uguaglianza. Ad esempio la prima trasformazione dell’ipotesi “3|n e 3|m” avviene lavorando 88 separatamente sulle due affermazioni. Questo significa che da 3|n ∧ 3|m si passa prima a 3|n con una mossa che è giustificata dalla legge logica dell’eliminazione di ∧. Quindi da 3|n ↔ n = 3i e da 3|m ↔ m = 3j si passa a 3|n ∧ 3|m ↔ n = 3i ∧ m = 3j con leggi del bicondizionale che si verificano facilmente e che dovrebbero essere interiorizzate. A questo scopo, si usa in particolare la legge della introduzione di ∧ nel conseguente, o distributività di → su ∧, oppure una legge derivata che afferma che (p → q) ∧ (r → s) → (p ∧ r → q ∧ s) (esercizio). Vale anche (esercizio): (p → q) ∧ (r → s) → (p ∨ r → q ∨ s). Un’altra regola che si può far rientrare nei procedimenti in avanti è quella della affermazione del conseguente, che da p permette di dedurre q → p qualunque sia q. Questa mossa merita un commento perché in sé sembrerebbe un indebolimento ozioso di p. La sua funzione è quella di portare sotto l’azione di ipotesi o fatti già stabiliti risultati che in verità non ne dipendono, !!! ma che devono essere combinati con altri che ne dipendono. Ad esempio si consideri la dimostrazione che se n è dispari allora anche 2 n è dispari. Se n = 2k + 1, allora si può fare appello a un prodotto notevole per affermare (2k + 1)2 = 4k 2 + 4k + 1, ma quindi, per l’affermazione del conseguente n = 2k + 1 → (2k + 1)2 = 4k 2 + 4k + 1. Questa implicazione serve perché insieme a n = 2k + 1 → n2 = (2k + 1)2 permette di dedurre, con l’introduzione di ∧ nel conseguente n = 2k + 1 → n2 = (2k + 1)2 ∧ (2k + 1)2 = 4k 2 + 4k + 1 e per la transitività dell’uguaglianza, 89 n = 2k + 1 → n2 = 4k 2 + 4k + 1, da cui segue poi n = 2k + 1 → n2 = 2h + 1, dispari, con h = 2k 2 + 2k.2 L’ultima cruciale implicazione si sarebbe anche potuta ottenere in un altro modo; con una legge di sostitutività dell’uguaglianza: n = 2k + 1 → ((2k + 1)2 = 4k 2 + 4k + 1 → n2 = 4k 2 + 4k + 1), quindi, per la distributività si → (n = 2k + 1 → (2k + 1)2 = 4k 2 + 4k + 1) → (n = 2k + 1 → n2 = 4k 2 + 4k + 1), e infine la conclusione voluta con il modus ponens dalla stessa implicazione di prima (n = 2k + 1 → (2k + 1)2 = 4k 2 + 4k + 1).2 L’affermazione del conseguente si sarebbe comunque potuta evitare del tutto, qui e in geenrale con lo stesso trucco: dal caso particolare della sostitutività dell’uguaglianza di sopra, si sarebbe potuto scrivere (2k + 1)2 = 4k 2 + 4k + 1 → (n = 2k + 1 → n2 = 4k 2 + 4k + 1) con la legge dello scambio degli antecedenti, e quindi applicare il modus ponens con (2k + 1)2 = 4k 2 + 4k + 1.2 7.2 Distinzione di casi Consideriamo ora il teorema che di tre numeri interi consecutivi uno almeno è divisibile per 3. Per rappresentare tre generici numeri interi consecutivi supponiamoli positivi - una possibilità è quella di indicarli con n, n + 1 e n + 2. L’enunciato del teorema allora diventa: o 3|n o 3|(n + 1) o 3|(n + 2). L’usuale dimostrazione si basa sulle proprietà della divisione e del resto, che è minore del divisore, quindi in questo caso uguale a 0, 1 o 2. Non abbiamo nessuna ipotesi esplicita del teorema relativamente al dato che è n, ma abbiamo che per ogni n, grazie al teorema fondamentale della divisione: 1. n = 3q + r con r < 3 per qualche q ed r. Di qui per semplici fatti aritmetici si può affermare3 3 Non stiamo più a segnalare i punti in cui si procede in modo diretto; ad ogni modo, in questo caso n = 3q + r con r < 3 significa n = 3q + r ∧ r < 3 cioè n = 3q + r ∧ (r = 0 ∨ r = 1 ∨ r = 2) e per la distributività segue la formula di sopra. 90 2. n = 3q o n = 3q + 1 o n = 3q + 2. Ci sono ora tre possibilità: se r = 0, cioè n = 3q, allora siamo a posto (cosı̀ si dice). Ma cosa significa questo rispetto all’enunciato del teorema? Il teorema è implicato da n = 3q, ovvero da 3|n, perché 3|n → 3|n ∨ 3|(n + 1) ∨ 3|(n + 2) per la legge logica di introduzione della disgiunzione. Abbiamo dunque 3. n = 3q → 3|n ∨ 3|(n + 1) ∨ 3|(n + 2). Se invece n = 3q + 1 allora n + 2 = 3q + 3 = 3(q + 1); quindi nell’universo aritmetico n = 3q + 1 → 3|(n + 2) e quindi di nuovo per l’introduzione di ∨ 4. n = 3q + 1 → 3|n ∨ 3|(n + 1) ∨ 3|(n + 2). Analogamente si ottiene 5. n = 3q + 2 → 3|n ∨ 3|(n + 1) ∨ 3|(n + 2). Ora per la legge logica della distinzione di casi, da 3, 4 e 5 si deduce che la disgiunzione dei rispettivi antecedenti implica la stessa conclusione, che non è altro che l’enunciato del teorema; ma tale disgiunzione degli antecedenti è la 2, per cui per modus ponens si ha la conclusione4 .2 Altre applicazioni della distinzione di casi si sono viste nelle dimostrazioni relative all’algebra degli insiemi. Ricordiamo quella per: se Y ⊆ X e Z ⊆ X allora Y ∪ Z ⊆ X. Se x ∈ Y ∪ Z allora per definizione x ∈ Y ∨ x ∈ Z; se x ∈ Y allora per Y ⊆ X vale x ∈ X e se x ∈ Z allora per Z ⊆ X vale pure x ∈ X. 2 Altre situazioni in cui si fa naturalmente ricorso alla distinzione di casi sono quelle in cui per un’affermazione universale sui naturali si distinguono il caso pari e il caso dispari; oppure quando in un’affermazione universale numerica si distingue il caso positivo dal caso negativo e dal caso nullo. 4 Naturalmente le due circostanze che si verificano in questo esempio, che l’enunciato del teorema è una disgiunzione, per cui a un certo punto interviene la legge della introduzione del ∨, e che la dimostrazione si fa per casi, quindi con una disgiunzione degli antecedenti, perché anche l’ipotesi è una disgiunzione, non hanno nessuna relazione tra loro. 91 Ad esempio, per dimostrare che ogni numero reale non negativo ha una radice quadrata si parte esplicitando il dato, un generico numero non negativo, scrivendo 0 ≤ x, quindi, per la relazione tra < e ≤, x = 0 ∨ x > 0. I due casi si trattano in modo molto diverso; se x = 0 basta osservare che 0 è una radice di 0, e quindi questa esiste; se x > 0 occorre la descrizione di un processo che genera il numero che è la radice di x, che comunque esiste anche in questo caso; alla fine si applica tacitamente la distinzione di casi.2 Esercizio. Dimostrare e dire quali leggi logiche sono implicite nella dimostrazione del fatto che per ogni numero naturale n, n2 + n è pari. Un caso particolare della distinzione dei casi si ha quando i due casi sono del tipo p e ¬p, e sono introdotti come artificio ad hoc, e allora apparentemente si riesce a dimostrare un risultato che non dipende da ipotesi specifiche: da p → A e ¬p → A e p ∨ ¬p → A segue A con il terzo eslcuso. Supponiamo ad esempio di voler far vedere che ogni numero reale è minore o uguale al suo valore assoluto; è da dimostrare x ≤ |x|, senza alcuna ipotesi su x, salvo che si tratta di un numero reale (fatto che permette di richiamare tacitamente tutte le proprietà dei numeri reali). Ma noi introduciamo l’alternativa x < 0 ∨ x 6< 0, come legge logica del tertium non datur , che si trasforma agevolmente (per le proprietà di <, vedi oltre) in x < 0 ∨ x ≥ 0. Ora se x ≥ 0 allora x = |x|, quindi x ≤ |x|; se x < 0 ≤ |x|, allora x < |x|, quindi x ≤ |x|.2 Esercizio. Dimostrare che per ogni numero reale x, |x| ≥ −x. A volte sembra che si usi la distinzione di casi ma non è cosı̀, o meglio, è anche cosı̀ ma c’è una spiegazione più breve. Ad esempio, consideriamo l’argomento con cui si dimostra che per p primo, se p|(nm) allora p|n oppure p|m. La dimostrazione di solito inizia nel seguente modo: mostriamo che se p6 |n allora p|m. (L’argomento matematico poi può continuare con un appello alla 92 fattorizzazione dei numeri naturali: data la scomposizione di nm in fattori primi, tra essi compare p, ma raccogliendo quelli di n, p resta tra gli altri, cioè tra quelli di m.) Se richiesto di un chiarimento sull’impostazione della partenza, chi parla probabilmente spiega: se p|n siamo a posto, se p6 |n allora . . . , con un’implicito appello alla distinzione di casi. Ma la spiegazione più semplice è che q ∨ r è equivalente a ¬q → r, quindi p|(nm) → p|n ∨ p|m è equivalente a p|(nm) → (p 6 | n → p|m), e si sta procedendo in modo diretto (e non c’è bisogno di dire “se p|n siamo a posto”). 7.3 Sillogismo disgiuntivo Mettiamo ora ordine nella trattazione delle relazioni d’ordine negli usuali sistemi numerici, di cui abbiamo già usato alcune proprietà familiari dall’esperienza scolastica. La relazione d’ordine può essere introdotta in due modi diversi, a seconda che si privilegi la relazione di ordine stretto oppure quella attenuata. O si introduce prima5 ≤, e quindi si definisce < con x < y ↔ x ≤ y ∧ x 6= y oppure si introduce prima < e si definisce ≤ con x ≤ y ↔ x < y ∨ x = y. Nel primo caso per la relazione ≤ si hanno a disposizione le leggi x≤x rif lessiva x≤y∧y ≤z →x≤z transitiva x ≤ y ∧ y ≤ x → x = y antisimmetrica x≤y∨y ≤x ordine totale e si dimostrano le proprietà x 6< x antirif lessiva x < y → y 6< x antisimmetrica x<y∧y <z →x<z transitiva x<y∨x=y∨y <x ordine totale 5 Non stiamo a dire come si definisce, ché non è rilevante, e d’altra parte si procede in modo diverso nelle diverse situazioni; ad esempio tra i naturali si usa definire x ≤ y se esiste un z tale che x + z = y; in altri casi si definiscono prima i numeri positivi, e poi x < y se y − x è positivo. 93 nel secondo caso il viceversa. Diverse leggi logiche intervengono in queste dimostrazioni. Ad esempio per dimostrare la proprietà riflessiva di ≤, a partire dalle proprietà di <, si nota che x = x → x = x ∨ x < x, per la legge dell’introduzione di ∨ a partire dalla legge logica dell’identità x = x → x = x e quindi si ottiene la conclusione con il modus ponens da x = x che si assume sempre valida per l’uguaglianza. In questa dimostrazione quindi non intervengono proprietà di <.2 Per dimostrare la proprietà dell’ordine totale per ≤, a partire dalle proprietà di <, si dimostra, sfruttando la mutua definibilità dei connettivi l’equivalente x 6≤ y → y ≤ x. A tal fine si osserva che x 6≤ y è equivalente, per la definizione di ≤, a x 6< y ∧ x 6= y, per una delle leggi di De Morgan. Ma con la proprietà di ordine totale di < e due applicazioni del sillogismo disgiuntivo (precedute da un’eliminazione di ∧) x 6< y e x 6= y forniscono y < x che con l’introduzione del ∨ diventa y ≤ x: x 6< y ∧ x 6= y x 6< y x 6= y x<y∨x=y∨y <x x=y∨y <x y<x y < x ∨ x = y.2 Esercizio. Completare le dimostrazioni delle proprietà di ≤ a partire da quelle di < e viceversa, cercando di non perdere la bussola. Nella dimostrazione di x ≤ |x| del precedente paragrafo siamo partiti da x < 0 ∨ ¬(x < 0) e abbiamo rimpiazzato x 6< 0 con x ≥ 0, appellandoci a proprietà di <, arrivando a x < 0 ∨ x ≥ 0. Ma quest’ultima formula, scritta 94 come x < 0 ∨ x = 0 ∨ x > 0, è la proprietà di ordine totale di <, e non ci sarebbe stato bisogno di derivarla facendo appello al tertium non datur e alla distinzione di casi, come abbiamo fatto prima. Il fatto è che la proprietà di ordine totale di < equivale proprio a ripartire il dominio in tre insiemi disgiunti. Quando si ha il dominio ripartito in n insiemi disgiunti si possono seguire due vie equivalenti e difficilmente distinguibili. Si può usare la distinzione di casi (generalizzata a n), oppure si può usare ripetutamente il terzo escluso e il sillogismo disgiuntivo. Un altro esempio che abbiamo visto di uso del sillogismo disgiuntivo è la dimostrazione della legge booleana 21 X ∪∅=X Dimostrazione X ⊆ X ∪ ∅ segue da un’altra legge già vista, la 25; viceversa, se x ∈ X ∪ ∅ allora x ∈ X ∨ x ∈ ∅; ma x 6∈ ∅, quindi x ∈ X. Il sillogismo disgiuntivo non è altro che una diversa formulazione del modus ponens, che tuttavia ha una sua giusta autonoma formulazione per i casi come quello dell’ultimo esempio, in cui interviene in modo naturale una disgiunzione e la negazione di un disgiunto; altrimenti bisognerebbe artificialmente sostituire la disgiunzione con il condizionale (x 6∈ ∅ → x ∈ X per x ∈ X ∨ x ∈ ∅) per applicare il modus ponens. Qualche volta invece la sostituzione di una disgiunzione con il condizionale non è innaturale, ma al contrario più elegante, come abbiamo visto nel caso di p|(nm) → p|n ∨ p|m. 7.4 Contrapposizione e Modus tollens La legge logica di contrapposizione (p → q) ↔ (¬q → ¬p) è spesso usata quando si deve dimostrare un condizionale. Ad esempio per dimostrare P ∪ Q = ∼ (∼ P ∩ ∼ Q) si considera il bicondizionale x ∈ P ∪ Q ↔ x ∈ ∼ (∼ P ∩ ∼ Q) 95 e prima si assume x ∈ P ∪ Q derivando x ∈ ∼ (∼ P ∩ ∼ Q) (esercizio; si noti l’applicazione della distinzione di casi), quindi per l’implicazione inversa si assume x 6∈ P ∪ Q e si deriva x ∈∼ P ∩ ∼ Q, dimostrando cosı̀ di fatto x ∈ P ∪ Q ← x ∈ ∼ (∼ P ∩ ∼ Q) attraverso x 6∈ P ∪ Q → x ∈ ∼ P ∩ ∼ Q, come richiesto.2 La legge di contrapposizione giustifica anche la regola del modus tollens che si schematizza con p → q, ¬q ¬p che si può vedere come un modus ponens applicato al condizionale ¬q → ¬p, equivalente a p → q, e che ha le applicazioni più varie. Un esempio dovuto a Lewis Carroll è il seguente argomento: a) I bambini sono illogici. b) Le persone che sanno come trattare i coccodrilli non sono disprezzate. c) Le persone illogiche sono disprezzate. d) Perciò i bambini non sanno trattare i coccodrilli. L’argomento è valido in quanto la conclusione d) segue dalle premesse con questi passaggi: da b) e c) per modus tollens si ha che le persone illogiche non sanno come trattare i coccodrilli; quindi la conclusione segue da questo e da a) per transitività. 7.5 Dimostrazioni per assurdo La contrapposizione è collegata alla dimostrazione per assurdo, di cui ci sono diverse varianti. La più comune è quella in cui partendo dall’assunzione p si arriva ad una contraddizione, e quindi si conclude ¬p, secondo la legge di riduzione all’assurdo. Un esempio, dove la riduzione all’assurdo interviene come parte finale della dimostrazione, dopo altri argomenti, che includono la contrapposizione per modificare e meglio usare un condizionale, è il seguente teorema: 96 !!! Se n divide (n − 1)! + 1 allora n è primo6 , la cui conclusione che n è primo dimostriamo provando che p non divide n per ogni p < n7 . Ovviamente consideriamo p > 1. L’ipotesi è n|((n − 1)! + 1). Osserviamo innanzi tutto che se p < n allora ovviamente p|(n − 1)!. Questa condizione su p resta adesso fissata per tutto il ragionamento, o meglio p < n implica tutte le affermazioni seguenti. Ricordiamo il fatto noto che a|b ∧ a|(b + c) → a|c e contrapponendo a6 | c → a6 | b ∨ a6 | (b + c). Come caso particolare p 6 | 1 → p 6 | (n − 1)! ∨ p 6 | ((n − 1)! + 1). Ma p 6 | 1, quindi p 6 | (n − 1)! ∨ p 6 | ((n − 1)! + 1). Ma p|(n − 1)!, quindi p 6 | ((n − 1)! + 1) per il sillogismo disgiuntivo. La conclusione parziale di questa prima parte diretta della dimostrazione è che, per p < n, p 6 | ((n − 1)! + 1). Ora dobbiamo provare che p non divide n, e lo facciamo per assurdo. Assumiamo p|n. Siccome per ipotesi n|((n − 1)! + 1), se p|n avremmo per la transitività della relazione di divisibilità che p|((n − 1)! + 1), una contraddizione con la conclusione della parte precedente della dimostrazione. Dunque p6 | n.2 Osservazione: Torniamo un momento indietro a vedere come funziona la condizione p < n che abbiamo usato nel corso della dimostrazione, dicendo che implicava tutte le successive affermazioni. Nella prima parte, quando abbiamo detto sopra “Ma p|(n − 1)!, quindi p 6 | ((n − 1)! + 1) per il sillogismo disgiuntivo”, ci siamo espressi in modo corretto ma abbreviato; ci sono almeno tre modi in cui esplicitare le leggi logiche che intervengono. Primo modo. Noi in realtà avevamo che 6 L’operazione “fattoriale” n! è definita da n! = 2 · 3 · . . . · n. Si veda il paragrafo 15. Tale formulazione ristretta è equivalente alla definizione di primalità perché i divisori di un numero sono minori del numero stesso. Anzi basterebbe di meno (esercizio). 7 97 p 6 | (n − 1)! ∨ p 6 | ((n − 1)! + 1) e inoltre p < n → p|(n − 1)!, ovvero quest’ultima e p|(n − 1)! → p 6 | ((n − 1)! + 1). Allora per la transitività del condizionale si ha p < n → p 6 | ((n − 1)! + 1). Secondo modo. Da p|(n − 1)! → p6 | ((n − 1)! + 1). con l’affermazione del conseguente si ha p < n → (p|(n − 1)! → p 6 | ((n − 1)! + 1)). e con p < n → p|(n − 1)!, e la distributività di → si arriva alla stessa conclusione. Terzo modo. E’ quello che di fatto è stato usato. Il sillogismo disgiuntivo è sempre valido anche relativizzato a una (stessa) condizione che implica le due premesse e la conclusione: p → q, p → ¬q ∨ r p→r e la dimostrazione si può fare in generale come nel secondo modo di sopra.2 La più famosa √ dimostrazione per assurdo della storia è quella della irrazionalità di 2, che non faremo il torto di presentare (esercizio). Una contraddizione è normalmente un enunciato della forma q ∧ ¬q, oppure due enunciati q e ¬q, ottenuti separatamente8 , q qualunque perché tutte 8 Se si sono dedotti, separatamente, dalle stesse premesse, q e ¬q, si può derivare esplicitamente q ∧ ¬q, ad esempio con due applicazioni del modus ponens alla legge logica q → (¬q → q ∧ ¬q), che a sua volta deriva dalla legge dell’identità q ∧ ¬q → q ∧ ¬q e dalla legge di esportazione. 98 le contraddizioni sono equivalenti tra loro (per ex falso quodlibet da una di esse si può dedurre qualunque enunciato). A volte si dice che certi enunciati, come 0 = 1, sono un assurdo, o una contraddizione in sé, ma in realtà non esistono contraddizioni in sé; la formula 0 = 1 è una contraddizione solo perché tra gli assiomi o i fatti noti si ha già 0 6= 1. Se da p si deduce 0 = 1, allora da 0 6= 1, per l’affermazione del conseguente si ha anche p → 0 6= 1, e ci si riporta alla contraddizione classica p → q ∧ ¬q. Lo stesso con altre formule. Ad esempio, dimostriamo che per √ verificare se n√è primo basta provare a dividerlo per i primi che sono ≤ b n c, dove con b n c indichiamo la parte intera9 della radice quadrata di n. Supponiamo che tutti questi primi non dividano n, e dimostriamo che allora n è primo. Supponiamo per assurdo √ che n non sia primo; allora n è un prodotto di primi tutti maggiori di b n c, prodotto che è maggiore di n, e si avrebbe n < n, assurdo10 .2 La riduzione all’assurdo debole non è più debole, ma solo un caso speciale della riduzione all’assurdo, in cui partendo da p si arriva a ¬p, ma anche a p, e allora la contraddizione è data da p ∧ ¬p e la conclusione è la negazione della premessa, cioè ¬p. Nel caso particolare in cui si parte da ¬p e si arriva a ¬¬p, per la legge della doppia negazione si può concludere p, e questa legge (¬p → p) → p, in cui si dimostra p assumendo ¬p e derivando p, cioè derivando quello che si vuole dimostrare dalla propria negazione, ha talmente colpito la fantasia da essere chiamata consequentia mirabilis. Un teorema in cui si può riconoscere questa forma di argomento è quello con cui si stabilisce che esistono infiniti numeri primi. Si può formulare la stessa conclusione dimostrando che non ci sono solo k primi, qualsiasi sia k. Supponiamo che ci siano solo (esattamente) k primi p0 , p1 , . . . , pk−1 . Si considera il numero N = 1 + (2 · 3 · 5 · . . . · pk−1 ) e si dimostra facilmente (con un argomento simile ad uno visto in precedenza) che nessuno dei primi p0 , p1 , . . . , pk−1 è un divisore di N , che peraltro è maggiore di tutti questi. Ora si applica una distinzione di casi. Se N è primo, 9 10 √ Il più grande intero ≤ n. n < n congiunta con l’antiriflessività di < dà una contraddizione. 99 è un nuovo primo; se N non è primo, è divisibile per un primo maggiore dei p0 , p1 , . . . , pk−1 , e in entrambi i casi non è vero che i numeri primi sono tutti i {p0 , p1 , . . . , pk−1 }, o che ne esistono solo k. Quindi non esistono solo k primi.211 Una riduzione all’assurdo si può vedere anche quando si applica il modus tollens; infatti avendo p → q e ¬q si può dire che se si avesse p, si avrebbe per modus ponens anche q, cioè insieme a ¬q una contraddizione; quindi ¬p. Più esplicitamente, da ¬q segue p → ¬q per la legge di affermazione del conseguente, quindi si ha sia p → q sia p → ¬q e si applica la riduzione all’assurdo. Viceversa la riduzione all’assurdo si può derivare dalla contrapposizione, perché da p → q ∧ ¬q contrappondendo si ha ¬q ∨ q → ¬p, e q ∨ ¬q è la legge del tertium non datur . Alcune dimostrazioni per assurdo possono dunque essere sostituite da applicazioni della contrapposizione. Ad esempio, si consideri la dimostrazione del fatto che se b e c sono interi e se l’equazione x2 + bx + c = 0 ha soluzioni razionali, queste in realtà sono intere. Una dimostrazione in cui si usa la riduzione all’assurdo è la seguente. Si parte da x= −b ± √ b2 − 4c 2 e si osserva che per essere x intero occorre che il numeratore, intero per ipotesi, sia pari. Per dimostrare che il numeratore è pari, essendovi un radicale che non è facile decidere che proprietà abbia, viene in mente di considerare il quadrato. Abbiamo prima dimostrato che se un numero è dispari, il suo quadrato è dispari. Se vogliamo (provare a) fare uso di questo fatto, possiamo impostare una dimostrazione per assurdo, assumendo che il numeratore sia dispari. Allora il suo quadrato è dispari. Ma svolgendo i conti, si vede facilmente che il quadrato è della forma 2m, cioè pari. Dunque che il numeratore sia dispari implica una contraddizione, e il numeratore è pari.2 11 La complicazione dell’argomento è dovuta anche alla complicazione della formulazione dell’enunciato di partenza, un po’ artificiosa. Se si fosse detto semplicemente che si intendeva dimostrare: dati k primi, ne esiste uno maggiore, si sarebbe potuto fare una dimostrazione diretta. 100 Altrimenti, ricordando sempre l’implicazione già dimostrata “n dispari → n2 dispari”, si può inserire la contrapposizione “n2 pari → n pari”, che termina con la conclusione desiderata, e provare a dimostrare che il quadrato del numeratore è pari. Elevando al quadrato e facendo i conti, si vede che questo in effetti è il caso.2 Consideriamo un altro esempio. Per dimostrare che, per a e b razionali o reali, se ab = 0 allora o a = 0 o b = 0, si può per assurdo negare il condizionale, e quindi supporre che ab = 0 e a 6= 0 e b 6= 0, per la legge sulla negazione dell’implicazione e De Morgan. Ma ora se a 6= 0 si può dividere ambo i membri della prima uguaglianza per a, e si ottiene b = 0, e si ha una contraddizione.2 Si noti in questo esempio che si potrebbe anche vedere un caso di consequentia mirabilis, perché quando si arriva a dedurre b = 0 si può continuare con ab = 0 → b = 0 per l’affermazione del conseguente, quindi ab = 0 → a = 0 ∨ b = 0 per l’introduzione della disgiunzione, e quindi dalla negazione del condizionale da dimostrare si è arrivati al condizionale stesso.2 Infine invece in modo diretto si può assumere ab = 0 e dimostrare la conclusione, che è una disgiunzione, nella forma che a 6= 0 → b = 0. Questo si ottiene come sopra dividendo ab = 0 per a.212 Tutte le varianti di dimostrazioni illustrate in questo paragrafo sono rese possibili dalla mutua derivabilità delle leggi logiche proposizionali e dalla equivalenza di diverse regole e sistemi di regole. 12 Quest’ultimo teorema non è banale come sembra, dimostra che un corpo (come quello dei razionali o dei reali) non ha divisori dello zero, cosa che può succedere in strutture senza la divisione. 101 7.6 Dimostrazioni in avanti e all’indietro Una distinzione che viene fatta tra possibili impostazioni delle dimostrazioni è quella tra il procedere in avanti (forwards), a partire dalle ipotesi, verso la conclusione oppure nel risalire indietro (backwards), dalla conclusione a enunciati che implichino la conclusione, con l’obiettivo di arrivare tra questi alle ipotesi. La distinzione non coincide esattamente con quella tra le dimostrazioni dirette e le altre, anche se vi sono collegamenti; la scelta tra le due strategie dipende spesso dalla forma delle ipotesi e della conclusione, o dalle conoscenze che si hanno a proposito delle ipotesi stesse e di altri fatti connessi alla possibile conclusione. Se la conclusione è un enunciato negativo, l’idea di una dimostrazione per assurdo o per mezzo della contrapposizione è plausibile, anche se non garantita. Ma ci sono altri motivi per scegliere questa strategia. Ad esempio, per dimostrare che Se 2n − 1 è primo, allora n è primo, è più facile, o almeno promettente, partire dalla conclusione in cui si parla di n, su cui con operazioni aritmetiche si può arrivare a 2n − 1, che non viceversa, visto che per estrarre n da 2n − 1 occorre passare attraverso un log2 . In effetti, assumendo n non primo, quindi della forma n = hk, con h > 1 e k > 1, si può osservare che 2n − 1 = (2h )k − 1 = mk − 1 = (m − 1)(mk−1 + . . . + 1) che, per quel che si sa sui valori di h e k, fornisce una scomposizione di 2n − 1 nel prodotto di due fattori > 1.2 Analogamente, supponendo che si dovesse dimostrare x+ 1 ≥ 2, x se x > 0, conviene partire dalla disuguaglianza da dimostrare, e compiere su di essa manipolazioni algebriche che forniscono espressioni algebriche equivalenti, fino ad arrivare ad un risultato noto che vale per ogni x > 0. 102 x2 + 1 ≥2 x x2 − 2x + 1 ≥0 x (x − 1)2 ≥ 0, x vero per la regola dei segni. 2 Quando come in questo caso e in molti altri si usano equivalenze, nelle dimostrazioni all’indietro, bisogna fare attenzione a non perdere il senso della direzione13 . Qui l’ipotesi è x > 0 (oltre al fatto che x è un numero reale, o razionale) e si risale dall’ultima disuguaglianza alla prima che si doveva dimostrare. La dimostrazione è diretta, ma all’indietro. Nel caso delle trasformazioni algebriche il fatto che il legame sia quello dell’equivalenza permette di andare sia avanti che indietro, il che è comodo perché in genere non è facile divinare enunciati validi che implichino la conclusione voluta - per lo meno non ci sono criteri generali. Gli esempi aritmetici di questo paragrafo sono stati di necessità molto semplici, perchè la maggior parte dei teoremi aritmetici si dimostrano con una tecnica dedicata, l’induzione, che vedremo nel paragrafo 15. 13 I greci chiamavano analisi il processo per cui un problema, o un enunciato da dimostrare, era ricondotto ad altri di cui la soluzione era nota, e sintesi il processo inverso di controllo, con cui dalla soluzione dei problemi noti si ricavava la risposta a quello dato; alcune oscurità delle loro descrizioni del metodo si chiariscono se si considera che essi pensavano soprattutto ad equivalenze. 103 8 Alberi di refutazione 8.1 Il metodo La risposta alle domande semantiche, sulla verità logica o sulla insoddisfacibilità delle proposizioni, si può dare con metodi più efficienti della ricerca esaustiva offerta dalla costruzione delle tavole di verità, che è di complessità esponenziale. Uno di questi è il metodo degli alberi di refutazione 1 . Il nome deriva dal fatto che sono usati, per rispondere alla domanda sulla verità logica, secondo l’impostazione della ricerca del controesempio: si cerca di scoprire se esiste un’interpretazione che falsifichi la proposizione. Il metodo ha la proprietà che o la trova, se esiste, e quindi fornisce un’interpretazione in cui la negazione della proposizione è vera (controesempio: la proposizione !!! è falsa) oppure mostra che non è possibile che esista, e quindi la proposizione è una tautologia. Più in generale, il metodo serve a stabilire se esista o no un’interpretazione che soddisfa una proposizione composta, non partendo dal basso dalle possibili interpretazioni delle lettere (bottom up) ma dall’alto, dalla proposizione data, scendendo verso le sottoproposizioni componenti (top down); nel processo, si accumulano condizioni necessarie che l’ipotetica interpretazione, se esiste e soddisfa la radice, dovrebbe pure soddisfare - nel senso di quali altre proposizioni essa dovrebbe soddisfare o no - fino alle condizioni necessarie riguardanti le proposizioni atomiche; queste, se non sono incompatibili tra di loro, si traducono in condizioni sufficienti per la definizione dell’interpretazione. Gli alberi di refutazione possono dunque essere usati anche per rispondere alle altre domande semantiche, ad esempio quella sulla soddisfacibilità. Si chiamano in generale calcoli logici i metodi per rispondere ai quesiti logici sulla verità, l’insoddisfacibilità, la conseguenza, metodi che sono procedure guidate dalla sintassi, e che si articolano in applicazioni iterate di regole che producono strutture come sequenze o alberi di proposizioni, che si chiamano derivazioni o dimostrazioni. Gli alberi di refutazione sono alberi etichettati con proposizioni. Identifichiamo per comodità di scrittura i nodi con le loro etichette. Nella radice è una proposizione, di cui si vuole sapere se esiste un modello. L’albero è 1 Altri nomi usati, insieme a qualche variante di presentazione, sono quelli di alberi semantici , oppure di tableaux semantici. 104 sviluppato secondo la seguente procedura. Ad ogni stadio, si saranno già prese in considerazione alcune proposizioni, messe tra parentesi quadre o segnate con un asterisco, e ne resteranno da considerare altre. Se sono già state considerate tutte, l’albero è terminato; se no, si prende in esame una proposizione A non ancora considerata, e a seconda della sua forma si prolunga l’albero nel modo seguente, dopo aver segnato A e aver notato quali sono i rami non chiusi che passano per A, dove un ramo si dice chiuso se su di esso occorre sia una proposizone sia la sua negazione: • Se A è una proposizione senza connettivi, non si fa nulla (si va al passo successivo). • Se A è B ∧ C, alla fine di ogni ramo non chiuso passante per A si appendono alla foglia due nodi in serie etichettati con B e C, come nello schema: [B ∧ C] .. . ↓ F ↓ B ↓ C • Se A è B ∨ C, alla fine di ogni ramo non chiuso passante per A si aggiunge alla foglia una diramazione con due nodi B e C, come nello schema: [B ∨ C] .. . ↓ F . & B C con l’ovvia generalizzazione (qui e nella prececente regola) che si ottiene applicando ripetutamente la regola se si tratta di una congiunzione o disgiunzione generalizzata. 105 • Se A è B → C, alla fine di ogni ramo non chiuso passante per A si aggiunge alla foglia una diramazione con due nodi ¬B e C, come nello schema: [B → C] .. . ↓ F . & ¬B C • Se A è ¬B e B non ha connettivi, non si fa nulla. • Se A è della forma ¬B e B è ¬C, al fondo di ogni ramo non chiuso passante per A si appende alla foglia il successore C, come nello schema: [¬¬C] .. . ↓ F ↓ C • Se A è della forma ¬B e B è B1 ∨ B2 , alla fine di ogni ramo non chiuso passante per A si aggiungono alla foglia due nodi in serie ¬B1 e ¬B2 , come nello schema: [¬(B1 ∨ B2 )] .. . ↓ F ↓ ¬B1 ↓ ¬B2 con l’ovvia generalizzazione se B è una disgiunzione generalizzata. • Se A è della forma ¬B e B è B1 → B2 , alla fine di ogni ramo non chiuso passante per A si appendono alla foglia due successori in serie 106 B1 e ¬B2 , come nello schema: [¬(B1 → B2 )] .. . ↓ F ↓ B1 ↓ ¬B2 • Se A è della forma ¬B e B è B1 ∧ B2 , alla fine di ogni ramo non chiuso passante per A si aggiunge alla foglia una diramazione con due nodi ¬B1 e ¬B2 , come nello schema: [¬(B1 ∧ B2 )] .. . ↓ F . & ¬B1 ¬B2 Ovviamente se per il nodo in considerazione non passa alcun ramo non chiuso, non si fa nulla. Dalla formulazione è chiaro che quando tutti i rami sono chiusi il procedimento termina, anche se non tutte le proposizioni sono state considerate, e in tal caso l’albero si considera terminato e si dice chiuso. Non diamo le regole per il bicondizionale (esercizio) perché non sarebbero altro che l’adattamento di quelle che derivano dal fatto che p ↔ q è equivalente a (p → q) ∧ (q → p). Lo stesso per ⊕, ma si preferisce eliminare prima questi connettivi (comunque si diano le regole per ⊕ esercizio), e questa è l’unica preparazione o trasformazione che si fa sulle proposizioni; altrimenti si prendono cosı̀ come sono. !!! Si leggano con attenzione le regole, cogliendone tutte le informazioni e i vincoli: ad esempio, quando si lavora su di un nodo, si aggiungono proposizioni su tutti i rami passanti per quel nodo, ma non sugli altri. !!! 107 Esempio 1. Consideriamo la proposizione ¬((¬p ∨ q) ∧ p → q) che mettiamo nella radice dell’albero ¬((¬p ∨ q) ∧ p → q) 2. Lavorando su di esso, che è la negazione di un condizionale, otteniamo [¬((¬p ∨ q) ∧ p → q)] ↓ (¬p ∨ q) ∧ p ↓ ¬q 3. Lavorando su (¬p ∨ q) ∧ p otteniamo [¬((¬p ∨ q) ∧ p → q)] ↓ [(¬p ∨ q) ∧ p] ↓ ¬q ↓ ¬p ∨ q ↓ p 4. Lavorando prima su ¬q, senza alcun effetto, e poi su ¬p ∨ q [¬((¬p ∨ q) ∧ p → q)] ↓ [(¬p ∨ q) ∧ p] ↓ [¬q] ↓ [¬p ∨ q] ↓ p . & ¬p q. 108 Non è neanche necessario indicare che si sono presi in considerazione le restanti proposizioni, perché il loro effetto è nullo. L’albero è chiuso, perché su uno dei sue due rami occorrono p e ¬p, e sull’altro occorrono q e ¬q. Se si deve interpretare come è stato ottenuto un albero sviluppato, è di aiuto che sia segnato a fianco di ogni proposizione l’ordine in cui è stata presa in considerazione, come in [¬((¬p ∨ q) ∧ p → q)]1 ↓ [(¬p ∨ q) ∧ p]2 ↓ [¬q]3 ↓ [¬p ∨ q]4 ↓ p . & ¬p q. Esempio ¬((p ∧ q) ∨ (¬p ∧ q) ∨ ¬q)1 ↓ ¬(p ∧ q)3 ↓ ¬(¬p ∧ q)4 ↓ ¬¬q2 ↓ q .& ¬p ¬q .& chiuso ¬¬p ¬q chiuso 109 dove il ramo di destra con foglia ¬q non è sviluppato con ¬q . & ¬¬p ¬q come dovrebbe essere per il lavoro su ¬(¬p ∧ q), perché il ramo è già chiuso; il ramo di sinistra non è prolungato con ¬¬p ↓ p perché anch’esso chiuso. 8.2 Correttezza e completezza Il primo problema con ogni algoritmo è quello della terminazione, in particolare per gli algoritmi di decisione; se l’algoritmo non si ferma sempre, con una risposta, dopo un numero finito di passi, non ci si può affidare ad esso per decidere le questioni che interessano (nel senso di lanciarlo e stare ad aspettare). Lemma 8.2.1 (Terminazione) La costruzione dell’albero di refutazione inizializzato con una proposizione termina sempre in un numero finito di passi. Dimostrazione. Se ad ogni stadio si lavora su una proposizione di quelle che hanno altezza massima n tra quelle non ancora considerate, l’applicazione delle regole fa sı̀ che dopo un numero finito di passi tutte quelle di altezza n siano state considerate, e l’altezza massima delle proposizioni non ancora considerate sia quindi < n. Infatti le proposizioni introdotte nell’albero con le regole hanno tutte altezza minore della proposizione che governa la regola, salvo il caso di B → C, per cui si introducono ¬B e C, e ¬B può avere la stessa altezza di B → C (quando? esercizio); ma la successiva applicazione di una delle regole per proposizioni negate a ¬B, che si può eseguire subito, la sostituisce con proposizioni di altezza minore. Anche se dunque nel corso del procedimento il numero di proposizioni nei nodi dell’albero cresce con il crescere dell’albero, diminuisce quello delle 110 proposizioni di altezza massima, e dopo un numero finito di passi ci saranno solo proposizioni di altezza minima, senza connettivi, non ancora considerate, e a quel punto il processo termina, se non è terminato prima per la chiusura dell’albero. 2 Quando si dà un metodo sintattico per rispondere a quesiti di natura semantica (o un calcolo per risolvere un problema), si pone la questione, e la richiesta, della correttezza e completezza del metodo. Correttezza significa che le risposte che dà il metodo sono giuste, completezza significa che quando la risposta c’è il metodo la dà, quella giusta. Qualche ambiguità può sussistere quando le domande possibili sono diverse, e tuttavia collegate. Ad esempio per il fatto che Osservazione 8.2.2 Per ogni p, A è una tautologia se e solo se ¬A è insoddisfacibile ci si può porre come problema semantico sia il problema della verità logica sia il problema dell’insoddisfacibilità. Un calcolo si può pensare sia come calcolo per stabilire la verità logica sia come un calcolo per stabilire l’insoddisfacibilità. Scegliamo il metodo degli alberi di refutazione per il problema dell’insoddisfacibilità, e come risposta preferenziale affermativa la chiusura dell’albero (un esito in generale più rapido e che non richiede ulteriori elaborazioni); abbiamo allora Teorema 8.2.3 (Correttezza) Se l’albero di refutazione con radice A si chiude, allora A è insoddisfacibile. Dimostrazione 2 . Procediamo per contrapposizione dimostrando che se esiste un’interpretazione i che soddisfa A, allora a ogni stadio di sviluppo dell’albero esiste almeno un ramo tale che i soddisfa tutti le proposizioni del ramo. Allora l’albero non è mai chiuso, perché se un ramo è chiuso non tutte le sue proposizioni possono essere vere in una stessa interpretazione. Allo stadio n, consideriamo un ramo σ le cui proposizioni siano tutte soddisfatte da i, e una proposizione B su di esso, quindi vera in i, e non 2 Per questo e per il successivo teorema diamo dimostrazioni complete, anche se, essendo per induzione, si potranno apprezzare solo in seguito. Si può tuttavia già cogliere ugualmente l’essenza del ragionamento e la ragione della validità del risultato. 111 ancora considerata (se non ce ne sono, il lavoro su quel ramo è terminato senza che esso sia chiuso, e tale rimane alla fine, e l’albero finale non è chiuso). Se B è una congiunzione, al ramo sono aggiunti due nodi che sono anch’essi etichettati con proposizioni vere in i, e il ramo prolungato soddisfa, allo stadio successivo, la proprietà richiesta. Se B è una disgiunzione B1 ∨B2 , o il ramo3 σ _ B1 o il ramo σ _ B2 soddisfano la proprietà richiesta, a seconda che B1 o B2 siano vere in i. Lo stesso vale per gli altri casi (esercizio). 2 Viceversa Teorema 8.2.4 (Completezza) Se A è insoddisfacibile, l’albero di refutazione con radice p si chiude. Dimostrazione. Dimostriamo che Lemma 8.2.5 Se l’albero non si chiude, allora per ogni ramo non chiuso e terminato esiste un’interpretazione i che soddisfa tutti le proposizioni del ramo, inclusa la radice. Dimostrazione del lemma. Sia σ un ramo non chiuso dell’albero terminato. Si definisca un’interpretazione i ponendo i(p) = 1 per ogni proposizione atomica p che occorre come nodo nel ramo σ, e i(p) = 0 per ogni proposizione atomica tale che ¬p occorre come nodo nel ramo σ. Si dimostra ora che ogni proposizione di σ è vera in i. Supponiamo questo verificato per tutte le proposizioni sul ramo che hanno un’altezza minore di un numero fissato n, e facciamo vedere che lo stesso vale per quelle di altezza n. Se B è una congiunzione B1 ∧ B2 , quando è stata presa in considerazione B si sono aggiunti come nodi del ramo sia B1 che B2 , che sono quindi in σ e hanno altezza minore di n e quindi si suppongono vere in i; dunque anche B è vera in i. Se B è una disgiunzione B1 ∨ B2 , quando è stata presa in considerazione B si sono aggiunti a tutti i rami passanti per B, incluso (quello che sarebbe diventato) σ, o B1 o B2 ; quindi una delle due è su σ, e vera in i, quindi anche B è vera. Gli altri casi si trattano nello stesso modo. 2 2 Se in un ramo terminato non chiuso manca una lettera che occorre nella radice, nel definire l’interpretazione si può dare ad essa il valore che si vuole; ciò significa che al ramo è associata più di una interpretazione. 3 _ σ B1 è il ramo prolungato con B1 ; la notazione è quella della concatenazione di liste. 112 L’esito complessivo dei teoremi di correttezza e completezza è che il metodo degli alberi prende in esame tutte le possibili strade per provare a definire interpretazioni, e se ce ne sono le fornisce tutte, e se non ce ne sono lo rivela. La dimostrazione delle proprietà di correttezza e completezza non prende in considerazione l’ordine in cui si sviluppa l’albero. Il procedimento degli alberi di refutazione si può rendere deterministico fissando un ordine progressivo per le proposizioni introdotte e quelle da prendere in considerazione ma proprio il fatto che la dimostrazione è indipendente dall’ordine permette di vedere che la risposta dell’albero e le sue proprietà non dipendono dall’ordine eventualmente fissato; lavorare su una proposizione prima che su di un’altra può modificare l’albero ma non la risposta finale; ogni mossa dipende solo dalla proposizione in considerazione e non dalle altre presenti in altri nodi. Si può sfruttare questa circostanza (oltre che come si è fatto nella dimostrazione della terminazione) per formulare utili regole euristiche, come quella di prendere in esame prima le proposizioni che si limitano ad allungare !!! i rami e non introducono diramazioni. Riassumendo Corollario 8.2.6 Per ogni A, A è soddisfacibile se e solo se l’albero di refutazione con radice A non si chiude mentre, nello spirito del controesempio, Corollario 8.2.7 Per ogni A, A è una tautologia se e solo se l’albero di refutazione con radice ¬A si chiude. Per la nozione di conseguenza logica, serve infine il Corollario 8.2.8 Per ogni A e B, |= A → B se e solo se l’albero di refutazione con radice ¬(A → B), o con radice A ∧ ¬B, si chiude. Si noti che è indifferente avere nella radice ¬(A → B) oppure l’equivalente A ∧ ¬B perché in entrambi i casi l’applicazione delle regole per la negazione di un condizionale o per la congiunzione portano ad aggiungere alla radice 113 ↓ A ↓ ¬B dopo di che si continua lavorando solo su A e su ¬B e loro sottoproposizioni. Si può addirittura partire con A ↓ ¬B se interessa la domanda A |= B. 8.3 Forme normali Gli alberi di refutazione permettono di ottenere altre informazioni sulle proposizioni a cui si applicano. Se A è una proposizione soddisfacibile, e quindi l’albero di refutazione con radice A non si chiude, una forma normale disgiuntiva di A si può ottenere nel seguente modo: per ogni ramo terminato e non chiuso, si faccia la congiunzione di tutti i letterali che sono nodi del !!! ramo, quindi si faccia la disgiunzione di queste congiunzioni. Le proprietà dimostrate della correttezza e della completezza garantiscono che questa disgiunzione è proprio equivalente a A (esercizio). Esempio ¬(p ∨ ¬q) ∨ q ∨ ¬(p → q) . ↓ & ¬(p ∨ ¬q) q ¬(p → q) ↓ ↓ ¬p p ↓ ↓ ¬¬q ¬q ↓ q. 114 L’albero non è chiuso e la forma normale disgiuntiva della radice è (¬p ∧ q) ∨ q ∨ (p ∧ ¬q); i tre modelli dati dai tre rami non chiusi sono i1 (p) = 0, i1 (q) = 1, i2 (q) = 1, i3 (p) = 1, i3 (q) = 0 dove il secondo sta per due interpretazioni, di cui una però coincide con la prima; rami diversi non danno necessariamente interpretazioni diverse. La !!! proposizione non è una tautologia in quanto manca l’interpretazione i(p) = i(q) = 0 tra i suoi modelli. Se l’albero per A si chiude, si sa che A è una contraddizione e una forma normale disgiuntiva si scrive direttamente. Dall’albero di A non si legge invece la forma normale congiuntiva di A; per ottenere questa, una via indiretta è la seguente: si mette nella radice ¬A, !!! si sviluppa l’albero per ¬A e si trova una forma normale disgiuntiva di ¬A. Quindi si nega questa premettendo una negazione, e si applicano le leggi di De Morgan. Poiché l’albero terminato e non chiuso permette di leggere i modelli della radice, per verificare che A è una tautologia si può anche sviluppare l’albero con radice A, e controllare che ci siano alla fine 2n interpretazioni associate ai rami non chiusi, se A ha n lettere. Ma se la domanda è se A sia una tautologia, è più conveniente impostare l’albero con ¬A, perché se la risposta è positiva !!! essa arriva dalla chiusura dell’albero, in generale più in fretta dello sviluppo integrale dell’albero con radice A. 8.4 Esercizi 1. Verificare con gli alberi di refutazione le leggi logiche del paragrafo 3.3.3. 2. Verificare con gli alberi di refutazione se le seguenti proposizioni sono tautologie, e se no indicare i controesempi: (p ∨ q) ∧ (r → ¬p) → (r → q) ((p → ¬p) ∧ (q → p)) → ¬q (p ∧ q) ∨ (¬p ∧ q) ∨ q 115 (p ∧ q) ∨ (¬p ∧ q) ∨ ¬q. 3. Verificare con gli alberi di refutazione che le seguenti proposizioni sono insoddisfacibili: ((p ∨ q) ∧ (¬p ∨ q) ∧ ¬q) → q (p → ¬q) ∧ (¬p ∨ q) (p → ¬q) ∧ ¬p ∧ q (p → ¬q) ∧ p ∧ q (p ∨ ¬q ∨ r) ∧ ¬r ∧ (¬p ∨ q) ∧ ¬p. 4. Trovare con gli alberi di refutazione la forma normale disgiuntiva e i modelli delle seguenti proposizioni: p ∧ q → (p → q) p ∧ q → (p → q ∧ r) (p → (q ∨ (p ∧ r))) ∧ (¬p ∧ (q → p)). 5. Con gli alberi di refutazione trovare la forma normale congiuntiva delle seguenti proposizioni: p ∧ q → (p → q ∧ r) (p ∨ q → r) ∧ ¬p → (p ∨ r) (p → (q ∨ (p ∧ r))) ∧ (¬p ∧ (q → p)). 116 9 Variabili e quantificatori Finora abbiamo considerato le variabili solo in relazione a formule contenenti una variabile x, a cui abbiamo associato, in ogni universo U , un insieme di verità. La variabile sembrerebbe un elemento alieno del linguaggio che compare solo nei simbolismi matematici, ma non è cosı̀. Gli insiemi di verità si incontrano invero quasi solo in matematica, dove è proprio tipico lo studio di insiemi definibili. Ad esempio dopo aver introdotto la definizione dei numeri primi ci si chiede come è l’insieme dei numeri primi (risulta che è infinito), si elaborano algoritmi per trovare i suoi elementi, se ne studiano sottoinsiemi. Tuttavia la definizione dei numeri primi - in simboli x > 1 ∧ (y |x → y = 1 ∨ y = x) - si può dare a parole: un numero è primo se è maggiore di 1 e un numero che lo divide è o 1 o il numero stesso. Il ruolo della variabile x è svolto da “un numero”. Veramente nella definizione compare anche il riferimento ad y, con qualche ambiguità nella frase in italiano, per la doppia occorrenza di “un numero”, che tuttavia non è fonte irrimediabile di confusione, grazie alle potenzialità espressive dei linguaggi naturali, che hanno altre soluzioni. L’uso delle variabili corrisponde alla funzione nel linguaggio di diverse parole come “uno”, “chiunque”, “ogni, “qualche” e simili. I pronomi servono a formare nuove frasi collegando frasi che hanno un riferimento in comune; nella frase “se uno ha un amico, è fortunato” si individuano due proposizioni componenti “uno ha un amico” e “è fortunato”. La seconda frase non presenta il soggetto, ma s’intende che è lo stesso della prima; si può ripetere (“uno è fortunato”) oppure più spesso, in altri casi, si deve precisare, con un indicatore che faccia capire più esplicitamente che il soggetto è lo stesso (ad esempio “egli”, “colui”, e simili). Nella seconda di due frasi, il soggetto della prima può apparire come oggetto, come in “se uno è generoso, di lui tutti dicono bene”. Anche per questo tipo di parti del discorso, si hanno molte versioni equivalenti, ciascuna con i suoi vantaggi e la sua convenienza, ad esempio “chiunque abbia un amico è fortunato”, “coloro che hanno un amico sono fortunati”; talvolta addirittura basta un’unica frase indecomponibile, come “i generosi sono lodati” per “coloro che sono generosi sono lodati”1 . Nei linguaggi simbolici moderni il ruolo dei pronomi è svolto appunto 1 La possibilità di questa espressione è all’origine di una diversa analisi del linguaggio, che ha portato alla prima logica formale della storia, nell’opera di Aristotele, come vedremo trattando i sillogismi. 117 dalle variabili: “se x ha un amico, x è fortunato”. L’uso delle variabili o della loro versione con pronomi presenta tuttavia aspetti delicati. Nella frase “se uno ha un amico, uno è fortunato” - oppure “se x ha y come amico, x è fortunato” - ci sono due tipi di “uno”, il primo “uno” soggetto, presente tacitamente anche come soggetto di “è fortunato”, e il secondo “un” di “ha un amico”2 . Il primo “uno” significa “chi”, “chiunque”, il secondo significa “qualche”. La stessa parola “uno”, e le corrispondenti variabili x e y possono cioè avere sia un senso universale che uno particolare. Anche se il senso della frase è ovvio, si può dire meglio “chiunque abbia qualche amico è fortunato”. La varietà di costrutti linguistici disponibili ha la funzione di evitare possibili ambiguità in altre frasi di non immediata decifrazione. Un esempio di frase ambigua, se presa isolatamente, è “uno che segue il corso di Logica si addormenta”. Il professore spera che voglia solo dire che si conosce uno studente che tende ad addormentarsi, ma magari gli studenti intendono che tutti si addormentano sempre. L’uso delle variabili da sole non risolve le ambiguità, anzi le potrebbe accrescere, se vengono a mancare le differenze di significato dei pronomi specifici; in “se x ha y come amico, x è fortunato”, se y fosse presa in senso universale, come la x, allora la frase significherebbe che chi è amico di tutti è fortunato, che è discutibile, piuttosto è un santo. La stessa analisi si può svolgere sul precedente esempio della definizione di numero primo. Un altro esempio è il seguente: nelle due frasi di argomento aritmetico un numero moltiplicato per se stesso dà 1 e un numero sommato al suo opposto dà 0 “un numero” è da intendersi in modo diverso; nel primo caso l’unico numero con quella proprietà è 1, e la frase potrebbe essere una sua descrizione estrapolata dal contesto, o un indovinello: “quale è . . . ?”; nel secondo caso “un numero” significa “qualunque numero”. 2 Non c’è differenza tra “uno” e “un”; si potrebbe dire in entrambi i casi “una persona”, ristabilendo l’uniformità. A seconda del contesto, “uno” può essere reso da “una cosa”, “uan persona”, “un numero”, “un Tizio” e simili varianti inessenziali. 118 La differenza si coglie se si formalizza, la prima frase con x · x = 1 e la seconda con x + (−x) = 0, ma non basta, si devono considerare gli insiemi di verità. L’insieme di verità di x · x = 1 è {−1, 1}, mentre l’insieme di verità della seconda formula è dato da tutti i numeri. Tuttavia usare la x e calcolare gli insiemi di verità per capire il senso richiede del lavoro, e spesso non è nemmeno sufficiente. Supponiamo di stare ragionando su questioni di aritmetica, e di voler ad esempio dimostrare che se un numero è pari, il suo successore è dispari. Il primo passo della versione aritmetica è quello di scrivere: se x è pari, allora x + 1 è dispari. Questa abbiamo visto che è una delle funzioni delle variabili3 , quella di indicare un elemento generico. Quindi occorre sostituire i termini tecnici con le loro definizioni, continuando con se x è divisibile per 2, allora x + 1 non è divisibile per 2. La frase “x è divisibile per 2” significa che esiste un numero (indicato con y, perché non lo conosciamo, e non possiamo conoscerlo se non conosciamo x, o finché non conosciamo x4 ) che moltiplicato per 2 dà x, o x = 2y; ma questa formula è da intendere nel senso che x è uguale a 2 moltiplicato per qualche y, non che x è uguale a 2 moltiplicato per tutti i numeri. La sola scrittura di y non basta a chiarire. La frase successiva “x + 1 è dispari” infatti, resa da x + 1 6= 2z, è diversa, significa che tutti i numeri z moltiplicati per 2 sono diversi da x + 1. In italiano, si direbbe correttamente: se per qualche y si ha x = 2y, allora per nessun z si ha x + 1 = 2z. Nel gergo matematico, si scrive se x = 2y, allora x + 1 6= 2z, 3 L’abbiamo già considerata nell’introduzione al paragrafo 7.1, col passaggio da “un numero” a “m”. 4 Non possiamo dire che y è x/2 perché a rigore non abbiamo l’operazione di divisione, se stiamo considerando solo i numeri naturali, anche se questa possibilità di espressione, è comoda, quando è disponibile; in generale però y non è una funzione esplicita di x. 119 ma le variabili non rendono la duttilità delle parole che indicano se si parla di uno, qualcuno o tutti. S’impone di nuovo una standardizzazione, nei linguaggi formali. Si introducono due simboli che si chiamano quantificatori , rispettivamente universale ∀ ed esistenziale ∃, e questi segni si premettono alle formule con variabili per segnalare che, nel loro raggio d’azione determinato dalle parentesi, le variabili stesse devono essere intese nel senso di “tutti” ovvero nel senso di “qualcuno”. La frase precedente diventa allora ∃y(x = 2y) → ∀z(x + 1 6= 2z). Vero è che questi segni devono essere eliminati per svolgere le dimostrazioni che richiedono manipolazioni algebriche di formule, e si dovrà arrivare a x = 2y → x + 1 6= 2z, ma l’aver scritto i quantificatori aiuta a ricordare come devono essere trattate le variabili. In questo caso, dato x, anche y è determinato e fissato (ancorché sconosciuto, vedi nota precedente); x + 1 6= 2z è un’affermazione relativa a tutti gli z (a tutti i numeri da pensare presi come valori di z) e va dimostrato come si dimostrano le affermazioni universali, riferite a z. Ad esempio per assurdo, oppure per induzione, tecnica che vedremo in seguito. Si noti che anche in italiano si passa spesso, nei ragionamenti, da frasi che contengono i quantificatori “qualche”, “tutti”, o equivalenti, a frasi con “uno”, o equivalenti, vale a dire di quelle che prese isolatamente sarebbero ambigue. Ad esempio, per giustificare l’affermazione “chi segue il corso di Logica non impara niente” si potrebbe argomentare nel seguente modo, prima eliminando un quantificatore universale e infine ripristinandolo: chiunque segue il corso di Logica (prima o poi) si addormenta; uno che segue il corso di Logica si addormenta; uno che si addormenta perde qualche spiegazione; uno che perde una spiegazione non capisce neanche il resto; quindi uno che segue il corso di Logica non capisce la materia, quindi, come volevasi dimostrare, tutti quelli che seguono il corso di Logica non imparano niente. Vedremo in seguito l’organizzazione in un formato standard di queste mosse logiche. I quantificatori si tolgono nel corso di un argomento per poter lavorare solo a livello proposizionale o algebrico; tale eliminazione è soggetta a precisi vincoli che vedremo. Nelle definizioni invece occorre scrivere tutti i necessari 120 quantificatori nel modo corretto; non è lecito ometterne alcuni; la definizione di “x è primo” è “x è primo” se e solo se x > 1 ∧ ∀y(y | x → y = 1 ∨ y = x). o più esplicitamente “x è primo” se e solo se x > 1 ∧ ∀y(∃z(y · z = x) → y = 1 ∨ y = x). Lo stesso rigore occorre quando si vuole fare un’affermazione il cui senso deve essere esplicito e netto. La frase “uno che ha un amico è fortunato” diventa, schematizzata, ∀x(∃yA(x, y) → F (x)). Per spiegare come ci arriva, dobbiamo introdurre i simboli dei linguaggi predicativi, spiegando come sono analizzate e costruite ora le frasi simboliche, non solo come composizione proposizionale di frasi più semplici ma anche grazie ai legami stabiliti dalla presenza di soggetti o complementi in comune, quindi rappresentando la struttura interna delle frasi atomiche. 121 10 10.1 Linguaggi predicativi Alfabeto Le frasi elementari nel linguaggio naturale sono di diverso tipo, ma in tutte si può individuare un soggetto, un verbo e un complemento (eventualmente più soggetti e più complementi, o nessuno). I verbi possono essere transitivi o intransitivi, ed esprimere azioni o stati. Si possono tutti standardizzare nella forma della attribuzione di una proprietà, o di un predicato, o di uno stato a uno o più termini. Questo corrisponde se si vuole ad avere un solo verbo, la copula “essere”, nelle due versioni “essere qualcosa” per i verbi intransitivi e “essere nella relazione . . . con” per i verbi transitivi: “Giovanni dorme” può diventare “Giovanni ha la proprietà (la caratteristica) di stare dormendo”, o “Giovanni è dormiente”; “Giovanni sta dormendo” significa che Giovanni è nello stato di sonno; “Giovanni possiede un Piaggio 50” diventa “la relazione di possesso sussiste tra Giovanni e un Piaggio 50”, o meglio “la relazione di possesso sussiste tra Giovanni e una cosa, e questa cosa è un Piaggio 50”; “Giovanni ama Maria”, cosı̀ come “Maria è amata da Giovanni”1 , vuol dire che la relazione di amore sussiste tra Giovanni e Maria (ma non necessariamente tra Maria e Giovanni, perché la relazione di amore non è simmetrica). Le frasi matematiche elementari, uguaglianze e disuguaglianze, “è uguale a”, “è minore di”, rientrano in questa tipologia. Cosı̀ quelle insiemistiche con “appartiene a”, cioè “è un elemento di”. I soggetti e gli oggetti non sono denotati solo da nomi propri, ma anche da descrizioni, o da pronomi. Ad esempio oltre ai nomi propri, come “Giovanni” e “2”, si possono avere descrizioni come “il padre di Giovanni”, “il presidente della Repubblica”, “la radice quadrata di 2”. Tali descrizioni coinvolgono funzioni, quando sono univoche, come nei precedenti esempi2 . Chiamiamo funzione “il padre di . . . ” in analogia a quello che è “la radice di . . . ”. Si introducono perciò simboli per designare predicati, e altri per costruire termini, che corrispondono alle descrizioni. Useremo preferibilmente le lettere P , Q, R, . . . per predicati, le lettere f , g, . . . per funzioni, le lettere a, b, c, . . . per costanti (corrispondenti dei nomi propri), le lettere x, y, . . . per variabili, con o senza indici. 1 La distinzione tra forma attiva e passiva è inessenziale. Per “padre” non è un controesempio alla funzionalità la famosa Lola, figlia di cento padri e una madre sola. 2 122 Tuttavia la rappresentazione grafica dei simboli non è rigida, per comodità di traduzione si possono anche usare altre lettere, come le iniziali delle parole italiane (A per “essere amici”), o addirittura complessi di lettere o parole intere, magari in caratteri particolari, come amici(x, y). Quando non si ha una funzione che indica un individuo, come in “il figlio di Tizio” - a meno che non si sappia che Tizio ha un solo figlio - la descrizione non è univoca; sarebbe meglio dire “uno dei figli di Tizio”, e si può prevedere che l’espressione corretta richieda giri di frase più complicati, con variabili (“uno”), che sono tuttavia possibili con un alfabeto del tipo descritto: “figlio di . . . ” è una relazione. Una frase come “Maria ama un figlio di Giovanni” diventa “Maria ama uno , e quest’uno è figlio di Giovanni”. Per ottenere i linguaggi predicativi, all’alfabeto costituito dai connettivi e dalle parentesi si aggiungono dunque le variabili, con i due quantificatori, e simboli di predicato, di funzione e di costante. Le variabili sono disponibili in quantità illimitata, anche se ogni volta se ne utilizzeranno solo un numero finito. Gli altri simboli differiscono da linguaggio a linguaggio, possono anche mancare, anche se almeno un simbolo di predicato deve sempre essere presente. 10.2 Termini e formule La struttura di base di un’affermazione atomica è l’attribuzione di un predicato a uno o più termini. Ogni (simbolo di) predicato ha un numero fisso di posti; i predicati a un posto, o monadici, sono anche detti proprietà; quelli a più di un posto relazioni . Se t1 , . . . , tn sono termini, non necessariamente distinti3 , si scriverà P (t1 , . . . , tn ) a indicare che il predicato P (o più precisamente la proprietà P se n = 1, o la relazione P se n > 1) sussiste per gli individui denotati dagli n termini. I termini sono le costanti, le varibili, e se f è un simbolo di funzione a n posti, e t1 , . . . , tn sono n termini, non necessariamente distinti, f (t1 , . . . tn ) è un termine. I termini chiusi sono i termini che non contengono variabili. !!! 3 Si potrebbe anche dire: “data una n-upla di termini”, dove le componenti di una n-upla non sono necessariamente distinte. 123 Quando si trattano argomenti matematici, si usano le convenzioni a cui si è abituati, di scrivere i simboli delle operazioni usuali4 in mezzo ai termini, laddove la notazione funzionale preferisce mettere il simbolo di funzione davanti; la stessa notazione infissa si adotta per le relazioni =, < e ≤. Esempio Supponiamo di avere una costante 0 e un simbolo funzionale a un argomento, indicato con 0 ; scriveremo x0 per 0 (x) e quindi x00 per (x0 )0 , . . . I termini sono 0, x, y, . . . per tutte le variabili 0 0 0 0 , x , y , ... 000 , x00 , y 00 , . . . ... L’insieme degli infiniti termini può essere enumerato in una successione unica, ad esempio 0, 00 , x, 000 , x0 , y, 0000 , x00 , y 0 , z, . . . Il criterio che guida l’enumerazione è quello, dopo il primo passo iniziale 0, 00 , di introdurre una nuova variabile, aggiungere un apice ai termini precedenti, e ricominciare con una nuova variabile. L’insieme dei termini distribuito in una matrice infinita viene percorso secondo le diagonali: 0 x y 7 ¶ ¶ 7 ? ¶ ¶ 00 x0 y 0 ¶ 7 ¶ 000 x00 y 00 z ... ... ... ¶ 7 ¶ 0000 .. . 4 In aritmetica e algebra si parla preferibilmente di operazioni, ma sono la stessa cosa delle funzioni. Qualche volta il segno di moltiplicazione non si scrive. 124 Se le variabili sono indicate con t2 , t3 , . . . , e 0 con t1 , si può determinare m z}|{ 00 0 esplicitamente con operazioni aritmetiche il posto di tn . . . , in funzione di n ed m5 . L’enumerazione per diagonali della matrice infinita i cui posti sono individuati dalla riga n-esima e dalla colonna m-esima dimostra che N × N è in !!! corrispondenza biunivoca con N. I termini 0, 00 , 000 , . . . sono quelli che denotano i numeri naturali. Talvolta si pensa che ci sia a disposizione una costante diversa per ogni numero naturale, perché si pensa a 0, 1, 2, 3, . . . , ma le cifre distinte sono solo dieci. Gli altri numeri sono denotati da termini chiusi, quelli che si possono formare con la rappresentazione posizionale. Pensare di disporre di infinite costanti è possibile teoricamente, ma non è realizzabile in concreto. Se è presente anche un solo simbolo di funzione a due argomenti l’insieme dei termini è molto più complicato. Esercizio. Si elenchi l’insieme dei termini chiusi del linguaggio che ha le costanti 0 e 1 e il simbolo di operazione binaria +. Le versioni formali delle frasi saranno chiamate formule, in analogia alle formule matematiche. Le formule sono definite nel seguente modo: 1 Se P è un predicato a n posti e t1 , . . . , tn termini, (P (t1 , . . . , tn )) è una formula. 2 Se A è una formula, anche (¬A) lo è. 3 Se A e B sono formule e • un connettivo binario, anche (A • B) è una formula. 4 Se A è una formula, e x una variabile, anche (∀xA) e (∃xA) sono formule. Le parentesi si riducono con le stesse convenzioni viste per le proposizioni, dove ora i quantificatori sono al primo posto nell’ordine di priorità, insieme alla negazione (se adiacenti, si procede prima dall’interno, o da destra verso sinistra, come già per la negazione nel linguaggio proposizionale). 5 Esercizio, dopo il principio di induzione. 125 Esempio ∃xP (x) ∧ ∃y¬Q(y) → ¬∃x∃yR(x, y) rimettendo le parentesi, non intorno alle formule atomiche e la coppia esterna, diventa ∃xP (x) ∧ ∃y¬Q(y) → ¬∃x(∃yR(x, y)) ∃xP (x) ∧ ∃y¬Q(y) → ¬(∃x(∃yR(x, y))) ∃xP (x) ∧ ∃y¬Q(y) → (¬(∃x(∃yR(x, y)))) ∃xP (x) ∧ ∃y(¬Q(y)) → (¬(∃x(∃yR(x, y)))) ∃xP (x) ∧ (∃y(¬Q(y))) → (¬(∃x(∃yR(x, y)))) (∃xP (x)) ∧ (∃y(¬Q(y))) → (¬(∃x(∃yR(x, y)))) ((∃xP (x)) ∧ (∃y(¬Q(y)))) → (¬(∃x(∃yR(x, y)))) da cui si vede la struttura, che è quella di un condizionale con l’antecedente che è una congiunzione e il conseguente che è una negazione; ∧, → e ¬ collegano tra loro formule quantificate (che iniziano con un quantificatore). Per le formule si possono costruire gli alberi sintattici individuando il segno logico principale, che ora può essere un connettivo oppure un quantificatore, per le formule del tipo (∀xA) e (∃xA). Nei nodi dell’albero sintattico di una formula occorrono le sottoformule della formula stessa. L’albero per ∃xP (x) ∧ ∃y¬Q(y) → ¬∃x∃yR(x, y) è il seguente: ∃xP (x) ∧ ∃y¬Q(y) → ¬∃x∃yR(x, y) .& ∃xP (x) ∧ ∃y¬Q(y) ¬∃x∃yR(x, y) .& ↓ ∃xP (x) ∃y¬Q(y) ∃x∃yR(x, y) ↓ ↓ ↓ P (x) ¬Q(y) ∃yR(x, y) ↓ ↓ Q(y) R(x, y). Esempi 1. Tipiche formule atomiche di argomenti aritmetici e algebrici sono x − 1 = 0, x · y + x = x · (y + 1), x + (y + z) = (x + y + z), x < x + 1, e in generale t1 = t2 e t1 ≤ t2 o t1 < t2 dove t1 e t2 sono termini. 126 2. Le identità booleane sono altri esempi di formule atomiche, ma si sono anche incontrate altre formule più complesse del linguaggio insiemistico, ad esempio le definizioni ∀x(x ∈ X ∩ Y ↔ x ∈ X ∧ x ∈ Y ) X ⊆ Y ↔ ∀x(x ∈ X → x ∈ Y ) o teoremi come ∀x(x ∈ X → x ∈ X ∨ x ∈ Y ), che prima avevamo scritto senza quantificatori universali per l’abitudine che c’è nell’esposizione matematica di ometterli quando si tratta di identità (cioè di formule valide per ogni x). In queste formule X, Y, . . . non sono variabili, ma simboli predicativi a un posto; x ∈ X è una scrittura alternativa per la notazione predicativa X(x)6 . 3. La frase “chi ha un amico è fortunato”, è formalizzata con l’enunciato ∀x(∃yA(x, y) → F (x)) dove A è un simbolo di relazione binaria, che sta per “essere amici”, e A(x, y) per “x e y sono amici”, F un simbolo di proprietà che significa “essere fortunato”, e F (x) per “x è fortunato”. 4. “Giovanni possiede un Piaggio 50” è formalizzata dall’enunciato ∃x(P1 (g, x) ∧ P2 (x)), dove g è una costante, che sta per “Giovanni”, P1 una relazione binaria, P1 (x, y) significa “x possiede y”, e P2 la proprietà di essere un Piaggio 50. 6 Si può anche considerare ∈ come un simbolo di relazione tra insiemi, quando si studiano questioni più avanzate che coinvolgono insiemi di insiemi, insiemi i cui elementi sono insiemi, e non si fa una distinzione logica tra individui ed insiemi; tutte le variabili variano su insiemi e si possono trovare formule come x ∈ y ∧ y ∈ z. 127 5. “Maria ama il figlio di Giovanni” è formalizzata da A(m, f (g)) dove m e g sono costanti, m per “Maria” e g per “Giovanni”, ed f un simbolo funzionale per “il figlio di . . . ”. 6. “Maria ama un figlio di Giovanni” è formalizzata da ∃x(A(m, x) ∧ F (x, g)) dove F è un simbolo relazionale a due posti, e F (x, y) sta per “x è figlio di y”. 7. “Maria ama i figli di Giovanni”, che significa che Maria ama tutti i figli di Giovanni, si formalizza con ∀x(F (x, g) → A(m, x)) e non con ∀x(A(m, x) ∧ F (x, g)); questa significa che tutti sono figli di Giovanni, e che Maria li ama tutti; il che implica che Giovanni sia Dio, e forse Maria la Madonna. La frase “Maria ama uno che è figlio di Giovanni”, che significa “Maria ama uno, e questi è figlio di Giovanni”, che corrisponde a A(m, x) ∧ F (x, g), potrebbe essere interpretata in modo ambiguo, ad esempio rivoltandola in “uno è figlio di Giovanni, Maria lo ama”; ma questa non va confusa con “uno che è figlio di Giovanni, Maria lo ama” che va resa da F (x, g) → A(m, x) (si veda il paragrafo 10.5 sui quantificatori ristretti). 8. La frase “dati due numeri, uno minore dell’altro, esiste un terzo numero compreso tra i due”, vera nel campo reale, può essere resa da ∀x∀y(x < y → ∃z(x < z ∧ z < y)). La congiunzione x < z ∧ z < y si può abbreviare, secondo l’uso matematico, con x < z < y. Il complesso ∀x∀y . . . si legge “per ogni x e per ogni y . . . ”. È anche !!! 128 lecito abbreviare con ∀x, y . . . , cosı̀ come ∃x∃y . . . con ∃x, y . . . . Non esiste un quantificatore che quantifichi sulle coppie; ci si comporta come se la frase fosse “dato un primo numero e dato un secondo numero . . . ”. Ma “un primo” e “un secondo” servono solo a facilitare l’espressione, si sarebbe potuto dire anche “dato un numero e dato un numero . . . ”, con qualche difficoltà nel seguito per i riferimenti appropriati. Si faccia attenzione che neanche la presenza di “due” vuol dire che i numeri devono essere considerati diversi; tale forma comune di espressione distingue il modo, il momento in cui i numeri sono presentati, o pensati, ma non è escluso che si presenti lo stesso numero due volte. Le parole “un primo”, “un secondo”, . . . , o “Tizio”, “Caio”, . . . sono quelle che corrispondono alle diverse variabili di un linguaggio matematico o logico; le variabili corrispondenti potrebbero essere indicate con x1 , x2 , . . . ; anche x1 e x2 (o x e y) come variabili sono diverse ma, pren- !!! dendo tutti i valori, possono anche prendere un valore uguale. Se si dice “dati due numeri esiste la loro somma” - formalmente ∀x∀y∃z(z = x + y) - non si eslcude che esista x + x, anzi lo si comprende. “Dati due numeri” significa “fatta due volte la scelta di un numero”, e le scelte possono cadere sullo stesso numero. Quando tuttavia si mette la condizione “uno minore dell’altro”, allora si esclude che possano essere uguali perchè la relazione “minore di” non è riflessiva. Tuttavia lo si esclude solo attraverso una deduzione, non con la semplice scrittura: se x e y denotano lo stesso numero, e bisogna considerare anche questo caso, x < y → ∃z(x < z ∧z < y) è soddisfatta come condizionale con valori falso-falso. Con “un terzo” di nuovo si vuol dire semplicemente “un numero”, e che sia diverso dai primi due segue automaticamente se “compreso” significa “strettamente compreso”, altrimenti, se fosse inteso come ≤ allora potrebbe anche essere uguale a uno dei due; non è questo il senso della frase, che vuole esprimere la densità dell’ordine dei numeri reali - e anche dei razionali. Se nella stessa formula il segno di relazione è interpretato su di una relazione riflessiva, come ∀x∀y(x ≤ y → ∃z(x ≤ z ∧ z ≤ y)), o più in generale 129 ∀x∀y(R(x, y) → ∃z(R(x, z) ∧ R(z, y))) ∧ ∀xR(x, x), allora la formula è banalmente vera per ogni relazione7 . 9. La frase “dati due numeri diversi tra loro, esiste un numero che è propriamente compreso tra i due numeri dati” si rappresenta con ∀x∀y(x 6= y → ∃z(x < z < y ∨ y < z < x)). La frase tra parentesi è soddisfatta da tutti gli x e y, anche quando x = y, perché allora l’antecedente è falso. 10. La frase “ogni numero positivo ha una radice quadrata”, vera nei reali, si rappresenta come ∀x(0 < x → ∃y(x = y 2 )). 11. La frase “esistono due numeri primi consecutivi” si rappresenta con ∃x∃y(x = y + 1 ∧ pr(x) ∧ pr(y)), dove pr(x) è un’abbreviazione per la definizione di “x è primo” già vista x > 1 ∧ ∀z(∃u(z · u = x) → z = 1 ∨ z = x). Che i numeri siano due non risulta dallo scrivere ∃x∃y ma da x = y + 1 che implica x 6= y; infatti si potrebbe anche scrivere: ∃x(pr(x) ∧ pr(x + 1)), dando per scontato (vedremo che si tratta di un assioma dei numeri naturali) che x 6= x + 1 e i numeri sono due. 7 Con “banalmente” s’intende che dati x e y come z si può prendere o x o y, e la formula non ci dà veramente informazioni. 130 10.3 Variabili libere e vincolate La clausola 4 della definizione del linguaggio predicativo8 è la clausola nuova, rispetto al linguaggio proposizionale. In una formula del tipo (∀xA), o (∃xA), A si chiama raggio d’azione del primo quantificatore universale, o rispettivamente esistenziale. Tutte le occorrenze di x all’interno del raggio d’azione vanno intese in senso o universale, o rispettivamente esistenziale. Naturalmente in (∀xA) fuori dal raggio d’azione del primo quantificatore non c’è nulla, ma si potrebbe costruire (∀xA) ∧ B. Per le occorrenze di x al di fuori del raggio d’azione del quantificatore, se non cadono dentro al raggio d’azione di un altro quantificatore, il senso in cui vanno interpretate non è determinato. L’interpretazione di tutta la formula allora è ambigua, o necessita di ulteriori precisazioni per essere compresa. Ad esempio ∀x(x2 + 1 > 0), che si legge “per tutti gli x, x2 + 1 > 0”, ha un senso compiuto, è l’affermazione di un fatto, e in particolare è vera in tutti i domini numerici usuali ordinati; nella formula (∀x(x2 + 1 > 0)) ∧ x < 0 invece l’ultima x è indeterminata, non cadendo nel raggio d’azione di nessun quantificatore9 . Si può studiare l’insieme di verità associato; nell’universo dei reali, per esempio, tale insieme è l’insieme dei numeri negativi; nell’universo dei naturali, è vuoto. La prima parte ∀x(x2 + 1 > 0) della congiunzione è vera in entrambi i casi e non contribuisce nulla alla delimitazione dell’insieme di verità. In ∀x(x2 + 1 > 0) ∧ ∃x(x < 0) l’ultima occorrenza di x cade nel raggio d’azione di ∃x, e si ha la congiunzione di due formule che corrispondono entrambe ad affermazioni di senso compiuto, vere negli interi, razionali o reali, mentre la seconda è falsa nei naturali. Le occorrenze di una variabile entro il raggio d’azione di un quantificatore relativo a quella variabile si dicono vincolate dal quantificatore (e cosı̀ pure la x adiacente a ∀ in ∀x o a ∃ in ∃x, che spesso non viene neanche menzionata); altrimenti si dicono libere. 8 Con “linguaggio” s’intende talvolta il complesso di alfabeto, regole sintattiche e nozioni semantiche, altre volte semplicemente l’insieme delle formule (o delle proposizioni per il linguaggio proposizionale). 9 Abbiamo messo ancora le parentesi esterne a (∀x(x2 + 1 > 0)) perché fosse chiaro dove finisce il raggio d’azione del quantificatore universale. 131 Se si vuole mettere in evidenza che la formula A contiene occorrenze libere di x si scrive A(x), se contiene occorrenze libere di x e di y A(x, y). Qualche volta si dice brevemente che x è libera in A per dire che in A vi sono occorrenze libere di x, o che x è vincolata per dire che vi sono occorrenze vincolate, ma bisogna fare attenzione che allora come abbiamo visto una variabile può essere sia libera sia vincolata in una formula. Le formule in cui non ci sono occorrenze libere di variabili si dicono enunciati . Sono le formule per cui ha senso chiedere se sono vere o false (una volta fissata l’interpretazione con il dominio di discorso). Le formule che non sono enunciati non esprimono frasi, piuttosto definiscono insiemi, o relazioni, a seconda di quante variabili libere hanno. Un’altra loro funzione è quella di intervenire nel procedimento per decidere se gli enunciati sono veri o falsi. In ∀x(x2 + 1 > 0) ∧ x < 0 le prime due occorrenze di x sono vincolate; la terza è libera. In ∀x(x2 + 1 > 0) ∧ ∃x(x < 0) tutte le occorrenze della x sono vincolate, ma le prime due dal quantificatore universale, le altre dal quantificatore esistenziale. Un quantificatore può cadere entro il raggio d’azione di un altro quantificatore, come si è visto in diversi esempi. Ma un quantificatore relativo a una variabile x può anche cadere entro il !!! raggio d’azione di un altro quantificatore relativo alla stessa x. Ad esempio, dopo aver considerato la formula del tipo p(x), con una variabile x che occorre libera: ∀x(x2 + 1 > 0) ∧ x < 0 nel dominio degli interi, e aver verificato che il suo insieme di verità non è vuoto, si ottiene un enunciato vero premettendo ∃x. Infatti Vp(x) 6= ∅ se e solo se ∃x(x ∈ Vp(x) ) se e solo se ∃xp(x). Ma allora si ottiene l’enunciato ∃x(∀x(x2 + 1 > 0) ∧ x < 0), che richiede di essere letto con attenzione. Quando nella costruzione di una formula si premette ad A un quantificatore con la variabile x, questo quantificatore vincola tutte le occorrenze di x che sono libere in A, e solo quelle. 132 Proprio per come è stato ottenuto, è chiaro che il quantificatore esistenziale nell’esempio vincola l’occorrenza di x che prima era libera, cioè l’ultima, e solo quella. L’azione del quantificatore esistenziale premesso ∃x scavalca la !!! parte d. . . e in d∀x(x2 + 1 > 0)∧ex < 0, dove non ci sono occorrenze libere di x, per agire su x < 0 dove x occorre libera. Le occorrenze vincolate di x in d. . . e, essendo già vincolate, sono insensibili all’azione di un altro quantificatore. In effetti, è come se fosse scritto ad esempio ∀z(z 2 + 1 > 0) ∧ x < 0, e si ottenesse perciò ∃x(∀z(z 2 + 1 > 0) ∧ x < 0), che è un modo di scrivere l’enunciato più chiaro, ed equivalente. Se si legge la frase in italiano si vede bene che non c’è interferenza tra le occorrenze libere e vincolate di x, perché si possono usare locuzioni diverse; “esiste un numero tale che, mentre ogni numero elevato al quadrato e aumentato di 1 è maggiore di 0, lui è negativo”10 . Ancor meglio, conviene leggere: “mentre ogni numero elevato al quadrato e aumentato di 1 è maggiore di 0, esiste un numero che è negativo”. Infatti un altro modo di evitare difficoltà interpretative è quello di andare a piazzare il nuovo ∃x dove è richiesto, cioè scrivendo ∀x(x2 + 1 > 0) ∧ ∃x(x < 0). Vedremo in seguito che tali trasformazioni equivalenti sono legittime. Infine un quantificatore relativo ad una variabile x si può premettere anche a una formula che non contenga alcuna occorrenza di x libera, ad esempio ∃x∀y(y 2 + 1 > 0) o anche ∃x∀x(x2 + 1 > 0) o ∀x(y < 0). La definizione di “formula” non lo esclude11 . In questi casi l’effetto del primo quantificatore è nullo, la sua presenza superflua, e la formula ottenuta equivalente a quella originaria. 10 Si è usato qui “mentre” come congiunzione, per sottolineare la non connessione tra le due parti della frase. 11 Non lo esclude perché sarebbe stato complicato inserire la condizione sulle occorrenze libere nella definizione stessa iniziale. 133 10.4 Interpretazioni Le formule matematiche presentate negli esempi del paragrafo 10.2 possono essere interpretate in diversi domini numerici; alcune sono vere negli uni e false negli altri. La possibilità di diverse interpretazioni è ancora più evidente in formule del tipo ∀x(∃yA(x, y) ↔ F (x)), dove ci sono simboli predicativi A e F che non hanno un’interpretazione nemmeno nell’uso comune (come è il caso dei simboli matematici), e questa è la caratteristica della logica formale. ∀x(∃yA(x, y) ↔ F (x)) può essere interpretato nell’universo delle persone, e significare che chi ha un amico è felice, e solo se ha un amico - se A e F sono interpretati in questo modo12 ; ma lo stesso enunciato può essere interpretato nei numeri naturali, usando A(x, y) per “x è divisibile per y con quoziente maggiore di 1 e minore di x” e F (x) per “x è un numero composto”, e l’enunciato è vero in questa intepretazione. Prima di chiedersi se un enunciato è vero o no occorre precisare quale interpretazione si ha in mente, vale a dire innanzi tutto quale sia l’universo del discorso, che deve essere un insieme non vuoto U ; quindi si devono stabilire le relazioni e funzioni su questo insieme che corrispondono ai simboli predicativi e funzionali che occorrono nell’enunciato. Se ci sono costanti, bisogna fissare gli elementi di U di cui le costanti sono nomi. Dare un’interpretazione significa conoscere gli insiemi definiti dalle loro formule atomiche, o i loro insiemi di verità13 Dare un’interpretazione comporta anche in particolare di determinare quali elementi denotano le costanti e tutti i termini chiusi, e se questi elementi stanno o no nelle relazioni in esame, e quindi se gli enunciati atomici sono veri o no. Un enunciato privo di quantificatori, ma contenente connettivi, ad esempio 1 = 1 + 0 ∨ 1 6= 1 è vero in un’interpretazione U se assume il valore 1 quando sia considerato come una proposizione costruita a partire dagli enunciati atomici, ai quali sono assegnati 1 o 0 a seconda che siano veri o no nell’interpretazione U . Un enunciato che inizia con un quantificatore universale ∀xA è vero in !!! un’interpretazione U se l’insieme di verità di A è tutto U . Si dice anche in 12 Qualcuno potrebbe non essere d’accordo che l’enunciato è vero, perché il suo amico è un cane, e se l’universo è l’universo delle persone, l’∃y non è verificato dal cane; se si vuole inserire anche gli animali nel discorso, allora l’universo deve essere modificato di conseguenza a tutti gli esseri viventi. 13 Non si intende che queste conoscenze siano effettive, ma solo determinate in linea di principio. 134 tal caso che la formula A è valida nell’interpretazione. Un enunciato che inizia con un quantificatore universale ∃xA è vero in un’interpretazione U se l’insieme di verità di A non è vuoto. Si dice anche che la formula A è soddisfacibile nell’interpretazione U . L’insieme di verità di una formula composta si ottiene ricordando la corrispondenza tra i connettivi e le operazioni insiemistiche, a partire dagli insiemi corrispondenti alle formule atomiche. Tuttavia l’interrelazione tra quantificatori e connettivi nella valutazione14 di una formula è resa complicata dal fatto che i quantificatori possono trovarsi non solo all’inizio di una formula. Ad esempio nell’insieme dei numeri interi Z, l’insieme di verità di x > 0 ∧ ∃y(x = 2y) è l’intersezione dell’insieme dei numeri positivi {x | x > 0} e dell’insieme {x | ∃y(x = 2y)}. Per determinare questo insieme, occorre prima considerare l’insieme di coppie {hx, yi | x = 2y }, che è una relazione, ed è l’insieme di verità della formula x = 2 · y nell’insieme Z × Z (esercizio: rappresentare questo insieme in un sistema di assi cartesiani xy nel piano), e quindi prendere le ascisse x di queste coppie. Questo è in generale l’effetto di un quantificatore esistenziale ∃, quello di eseguire una proiezione secondo l’asse della sua variabile. Analogamente per ∀. L’insieme {x | ∀y(x |y)} si ottiene dall’insieme {hx, yi | x |y } considerando tutti e soli gli x tali che tutti i punti della retta parallela all’asse y passante per l’ascissa x stanno nella relazione. Per questo l’effetto di una quantificatore universale si chiama anche cilindrificazione. In questo caso si ha solo x = 1. Nell’ultimo esempio si è usata l’abbreviazione “x divide y”, la quale tuttavia a sua volta nasconde un quantificatore ∃z(x · z = y). L’insieme è semplice da rappresentare,e si decide facilmente quali coppie vi appartengano, ma in teoria si sarebbe dovuto seguire una strada assai poco intuitiva, partire da un insieme di terne {hx, y, zi | x · z = y} e proiettare secondo l’asse z, prima della cilindrificazione. 14 Si chiama anche qui valutazione l’estensione dell’interpretazione a tutte le formule. 135 z6 y © * ©© © zi rhx, xz, ©© © © © rhx, xzi xz©©© ....... . . . © . . ..... ©© ...... . . © . . . © ..... ©© ....... x - x La definizione di verità in U di un enunciato A è allora la seguente: siccome se un enunciato A è vero in un’interpretazione su U , l’insieme {x ∈ U | A vero in U } è U , e se è falso è ∅, possiamo dire in generale che un enunciato è vero in U se il suo insieme di verità è tutto U . In particolare si noti che ∀xA è vero in U se e solo se A è valida in U . Si giustifica cosı̀ l’abitudine delle esposizioni di matematica di omettere i quantificatori universali, ad esempio davanti agli assiomi, presentati come formule valide. La verifica della verità di un enunciato si riduce quindi al calcolo del suo insieme di verità, ∅ o U , calcolo che può richiedere, come si è visto nell’esempio di sopra, la considerazioni di sottoinsiemi di U × U o di spazi di maggiori dimensioni. L’insieme di verità di una formula soddisfa le seguenti condizioni: se A è della forma ∀xB, l’insieme di verità di A è la cilindirificazione dell’insieme di verità di B; se A è un enunciato, il suo insieme di verità è U se l’insieme di verità di B è U , altrimenti è ∅; se A è della forma ∃xB, l’insieme di verità di A è la proiezione dell’insieme di verità di B; se A è un enunciato, il suo insieme di verità è U se l’insieme di verità di B non è vuoto, altrimenti è ∅; se A è della forma ¬B, l’insieme di verità di A è il complemento dell’insieme di verità di B; se A è della forma B ∧ C, l’insieme di verità di A è l’intersezione degli insiemi di verità di B e di C; se A è della forma B ∨ C, l’insieme di verità di A è l’unione degli insiemi 136 di verità di B e di C; se A è atomica, il suo insieme di verità è dato dalla relazione corrispondente al suo simbolo relazionale. È palese la maggiore complessità della valutazione delle formule rispetto alle valutazioni proposizionali, e tanto più è auspicabile trovare un riduzione meccanica di tale compito. Per lo studio di questioni logiche, si cercherà di usare ove possibile interpretazioni costruite su insiemi finiti, ovviamente più maneggevoli; ma non sarà sempre possibile, perché esistono enunciati che hanno solo modelli in- !!! finiti, ad esempio l’enunciato ∀x¬R(x, x) ∧ ∀x∃yR(x, y). 10.5 Sui quantificatori ristretti L’interpretazione intesa per una formula spesso si coglie e si fa capire leggendo opportunamente i quantificatori, visto che le variabili variano - prendono valori - nell’universo U fissato. ∀x si può allora leggere a seconda di come è U , “tutte le persone . . . ” oppure “tutti i numeri naturali . . . ”. Le variabili non variano mai sulla totalità delle cose esistenti, ma su un insieme (di volta in volta) fissato, anche se è chiamato universo. Ma è detto anche opportunamente “modello”. In molte frasi tuttavia i quantificatori apparentemente non si riferiscono a tutti gli elementi dell’universo ma a parti più ristrette; in un’interpretazione aritmetica per esempio non iniziano con “tutti i numeri” ma con “tutti i numeri positivi”, o “tutti i numeri primi”; e raramente si parla di tutti gli esseri viventi, ma piuttosto di tutti gli uomini, o di tutte le donne, o di tutti gli italiani e cosı̀ via restringendo. Talvolta si usano diverse specie di variabili, che variano su sottoinsiemi dell’universo, come ad esempio quando si stanno studiando i numeri reali e si dice che si useranno le lettere m, n a indicare numeri naturali. Non è tuttavia necessario avere a disposizione diversi quantificatori ristretti o diverse specie di variabili perché si realizzino queste possibilità, grazie all’uso del condizionale materiale. Per affermare che tutti i numeri positivi hanno una radice quadrata, si è scritto ∀x(0 < x → . . . ); per affermare che tutti i numeri primi maggiori di 2 sono dispari si scrive 137 ∀x(pr(x) ∧ 2 < x → . . . ); per affermare che tutti i tedeschi sono biondi si scriverà ad esempio ∀x(T (x) → B(x)), dove il quantificatore ∀x è letto rispettivamente “per tutti i numeri” o “per tutte le persone”, cioè con la x che varia su tutto l’universo. Il senso voluto è garantito da un predicato restrittivo nell’antecendente del condizionale. Se l’ultimo enunciato è vero per tutte le persone, allora ogni tedesco rende vero l’antecedente e quindi vero il conseguente, ed è vero che tutti i tedeschi sono biondi; se viceversa è vero che tutti i tedeschi sono biondi, anche l’enunciato di sopra che si riferisce con ∀x non ai tedeschi ma a tutte le persone è vero: se uno è tedesco, allora è biondo e il condizionale è vero; se uno non è tedesco, il condizionale è comunque vero avendo l’antecedente falso. In pratica, gli aggettivi sono resi da predicati con l’ausilio del condizionale: in “tutte le persone tedesche sono bionde” l’aggettivo “tedesco” diventa il predicato “essere tedesco” e la frase “tutte le persone, se sono tedesche, sono bionde”. “Tutti i P sono . . . ” e “qualche P è . . . ”, dove P delimita il campo di variabilità del riferimento, si realizzano introducendo un predicato unario P e scrivendo rispettivamente ∀x(P (x) → . . . ) e ∃x(P (x) ∧ . . . ). Si noti ovviamente la differenza nel caso del quantificatore esistenziale, dove la restrizione è realizzata con la congiunzione, che viene dalla traduzione di “esiste uno che è P e che . . . ”. Ricordiamo che sono frequenti abbreviazioni del tipo ∀x > 0 . . . per ∀x(0 < x → . . . ), ad esempio ∀x > 0 ∃y(x = y 2 ), o ∀x 6= y . . . o ∀x ∈ X . . . , e analogamente per ∃. Bisogna tuttavia ricordare la forma estesa con i connettivi (→ nel caso di ∀ e ∧ nel caso di ∃), per interpretare tali abbreviazioni in modo corretto. Ad esempio ∀x ∈ X(x ∈ Y ) significa ∀x(x ∈ X → x ∈ Y ), cioè X ⊆ Y , mentre ∃x ∈ X(x ∈ Y ) significa ∃x(x ∈ X ∧ x ∈ Y ), cioè X ∩ Y 6= ∅. 10.6 Esercizi 1. Scrivere in linguaggio predicativo tutte le definizioni relative alle relazioni d’ordine del paragrafo 5.3 (massimo, maggiorante, . . . ). 2. Quali sono gli insiemi di verità in N di 138 ∃y(2y = x ∧ ∃z(2z = y)) e ∃y(2y = x ∧ ∃y(2y = x)) ? 3. Quali sono gli insiemi di verità in N di ∃y(xy = 2 ∧ ∃z(yz = 2)) e ∃y(xy = 2 ∧ ∃y(xy = 2)) ? 4. In un’assemblea di politici, questi si dividono in onesti e disonesti, e si sa che a) esiste almeno un politico onesto; b) presi due politici a caso, uno almeno è disonesto. Si formalizzino le condizioni sui politici. Se nell’assemblea ci sono cento politici, si può decidere quanti sono gli onesti e quanti i disonesti? 139 11 Leggi logiche La terminologia semantica introdotta per i linguaggi proposizionali si estende agli enunciati predicativi. Un’interpretazione (del linguaggio) dell’enunciato A si dice modello di A se A è vero nell’interpretazione. Un enunciato A si dice logicamente vero se è vero in ogni interpretazione, e si scriverà |= A. Un enunciato B si dice conseguenza logica di A se in ogni interpretazione in cui A è vero anche B è vero, e si scriverà A |= B. Un enunciato B si dice logicamente equivalente a un enunciato A se A |= B e B |= A. Un enunciato A si dice insoddisfacibile o contraddittorio o inconsistente se non è vero in nessuna interpretazione. Vale ancora che per ogni A e B, A |= B se e solo se |= A → B se e solo se A ∧ ¬B è insoddisfacibile. Qualche volta, poiché gli enunciati sono pur sempre formule, si dice anche “A logicamente valida” per |= A. Ma inoltre si estendono le definizioni in modo da applicarle proprio anche a formule con variabili libere. Se A è una formula in cui occorre x libera, A si dice logicamente valida se ∀xA è logicamente vero, cosı̀ come si dice valida in un’interpretazione se ∀xA è vero in quell’interpretazione. Una formula si dice soddisfacibile se esiste un’interpretazione in cui essa è valida1 . Le formule logicamente valide continuano a chiamarsi anche leggi logiche. Esempi di leggi logiche si ottengono facilmente partendo da tautologie proposizionali e rimpiazzando le lettere che vi compaiono con formule qualunque di un linguaggio predicativo, la stessa formula a tutte le occorrenze della stessa lettera. Ad esempio da |= p ∨ ¬p segue |= ∃xP (x) ∨ ¬∃xP (x). Infatti, data una qualunque intepretazione, con un qualunque predicato per P , in essa ∃xP (x) risulterà o vero o falso. Se risulta vero, è come se si assegnasse il valore 1 a p nella proposizione; se risulta falso, è come se si assegnasse 0 a p nella proposizione; ma questa è una tautologia, per cui risulta vera in entrambi i casi, e i calcoli che si fanno a partire dai valori di p per arrivare al valore dalla proposizione p ∨ ¬p sono gli stessi che si fanno a partire dal fatto che ∃xP (x) è vero o no per arrivare a dire se ∃xP (x) ∨ ¬∃xP (x) è vero o no. Non 1 Si ricordi che invece una formula A si dice soddisfacibile in un’interpretazione U se ∃xA è vero in U ; e generalizzando, se A è del tipo A(x, y), s’intende ∃x∃yA(x, y) vero. 140 c’è bisogno di considerare alcuna interpretazione e vedere se in essa ∃xP (x) è vero o falso, perché comunque essa sia, e comunque sia l’interpretazione di P , e quindi il valore di ∃xP (x), in essa ∃xP (x) ∨ ¬∃xP (x) risulterà vero. Lo stesso succede con qualsiasi altra tautologia, e con la sostituzione di una qualunque formula. Quindi tutte le leggi logiche proposizionali restano tali considerando ora le lettere A, B, . . . che vi compaiono come formule di un qualunque linguaggio predicativo. Ma esistono anche altre leggi logiche per formule con quantificatori che non si ottengono in questo modo. Ad esempio ∀x¬A ↔ ¬∃xA è una di queste2 . Per verificarlo si ragiona nel seguente modo: in una qualunque interpretazione, se ∀x¬A è vero, l’insieme di verità di ¬A è tutto l’universo, quindi l’insieme di verità di A è vuoto; allora ∃xA è falso, e quindi ¬∃xA è vero. Analogamente nell’altra direzione (esercizio). 2 La legge si può considerare una generalizzazione di quelle di De Morgan, se si pensa che affermare ∀xA(x) sia come fare una grande congiunzione per tutte le A(x), e affermare ∃xA(x), cioè che A vale per almeno un x, sia come fare una grande disgiunzione. Si è visto già nella definizione di unione e intersezione generalizzate come i quantificatori esistenziale ed universale siano usati come generalizzazione della disgiunzione e della congiunzione. Se si combina questa legge logica con quella della doppia negazione si ottengono altre versioni, come ¬∀x¬A ↔ ∃xA o ∀xA ↔ ¬∃x¬A che mostrano come i due quantificatori non siano indipendenti, ma l’uno definibile in termini dell’altro, e della negazione. 2 Nella verifica di questa e delle successive leggi logiche, come già nella precedente A ∨ ¬A, supporremo per semplicità che si tratti di enunciati, per mostrare solo in modo più facile l’idea soggiacente. 141 La legge tipica del quantificatore universale è la legge di particolarizzazione ∀xA(x) → A(t), dove A(t) si ottiene sostituendo il termine t a tutte le occorrenze libere di x in A. Questa legge intuitivamente esprime il fatto che, se in una qualunque interpretazione vale ∀xA(x), allora A vale per un qualsiasi individuo, in particolare quello descritto da t; ma occorre prestare attenzione alle insidie linguistiche non percepibili in una trattazione formale. La lettura della legge è corretta se affermando che vale A(t) si intende che la proprietà espressa da A vale per l’individuo rappresentato da t, sempre la stessa proprietà applicata a diversi individui. Alcune sostituzioni sintatticamente lecite tuttavia modificano il senso di A(t). Se ad esempio A(x) è la formula ∃y(x 6= y), allora è vero che, poniamo nei naturali, ma qualsiasi interpretazione con almeno due elementi andrebbe ugualmente bene, ∀x∃y(x 6= y) e in particolare ∃y(0 6= y), ∃y(1 6= y), ∃y(1 + 1 6= y), come pure ∃y(x2 6= y) o ∃y(z 6= y). Se però si sostituisce a x la variabile y allora non si ha più la stessa proprietà affermata per y, come prima lo era per x, o per z o per x2 , ma si ha ∃y(y 6= y), che a parte che è falsa, non ha più lo stesso significato. Un esempio tratto, forzosamente, dal linguaggio comune potrebbe essere il seguente, dove si suppone di usare “Tizio” e “Caio” come variabili: invece di dire che ognuno ha un padre, si dica “ogni Tizio ha un Caio per padre”; particolarizzando, non si può dedurre “Caio ha Caio per padre”. Le sostituzioni richiedono cautela anche al di fuori del contesto della particolarizzazione; ad esempio, posto che x|y ↔ ∃z(x · z = y) significa che x divide y, allora (2x)|y significa che 2x divide y, 1|y che 1 divide y, 0|y che 0 divide y, u|y che u divide y, ma z|y significa che y è un quadrato. Quando si applica la legge di particolarizzazione per dedurre A(t) da !!! ∀xA(x) perciò, t per essere ammissibile non deve essere e non deve contenere variabili quantificate in A e tali che qualche occorrenza libera di x cade nel raggio d’azione di tali quantificatori. I termini chiusi sono sempre ammissibili. Le applicazioni della legge sono frequenti; gli assiomi di una teoria sono in genere enunciati che iniziano con un quantificatore universale (oppure sono presentati come formule valide, supponendo tacitamente una possibilità di 142 sostituzione di termini qualsiasi alle variabili che è di fatto un’applicazione della particolarizzazione). Si trovano esempi in cui t è chiuso come esempi in cui contiene variabili. Esempio La legge boleana dell’unicità dell’elemento neutro dell’addizione ∀x(x + y = x) → y = 0 si può dimostrare in questi due modi. Applicando a ∀x(x + y = x) la particolarizzazione con 0 si ottiene 0 = y = 0 da cui con trasformazioni algebriche, utilizzando y + 0 = y, si arriva a y = 0. Applicando invece a ∀x(x+y = x) la particolarizzazione con −y si ottiene −y + y = −y, quindi 1 = −y e y = 0. Nell’esempio la formula quantificata universalmente è del tipo ∀xA(x, y), e −y è ovviamente ammissibile perché A(x, y) non contiene quantificatori. Una legge simmetrica rispetto a quella di particolarizzazione, che si chiama anche di generalizzazione esistenziale, o di indebolimento esistenziale, afferma che è logicamente valida A(t) → ∃xA(x), con le stesse restrizioni su t. Ad esempio, siccome y + (−y) = 0 vale negli interi, si può dedurre ∃x(y + x = 0); qui bisogna pensare che A(t) è y + (−y) = 0, con −y per t, e che è ottenuta da y + x = 0 per sostituzione di −y a x. Ma potrebbe essere stata ottenuta per sostituzione di −y a z in y + z = 0 e si può altrettanto correttamente dedurre ∃z(y + z = 0). Un’applicazione di questa regola appare nella prima dimostrazione del paragrafo 7.1, a proposito della proprietà che se due numeri sono divisibili per 3 anche la loro somma lo è. Allora partendo da n = 3i e m = 3j ed arrivando a n+m = 3(i+j) si concludeva correttamente che ∃k(n+m = 3k). Se si combinano in serie particolarizzazione e generalizzazione esistenziale si ottiene ∀xA(x) → ∃xA(x), 143 che è valida in quanto si considerano solo sempre interpretazioni in cui l’universo non è vuoto3 . Sono leggi logiche anche le leggi di rinomina delle variabili vincolate, ∀xA(x) ≡ ∀yA(y) e ∃xA(x) ≡ ∃yA(y), dove y è una variabile che non occorre in A(x)4 . È come se in italiano una frase venisse espressa una volta con un “tutti” una volta con “chiunque” o altro costrutto. Altre leggi stabiliscono dei rapporti tra connettivi e quantificatori che permettono di trasformare le formule in altre equivalenti con un diverso segno logico principale: ∀x(A ∧ B) ≡ ∀xA ∧ ∀xB ∃x(A ∨ B) ≡ ∃xA ∨ ∃xB distributività di ∀ su ∧ distributività di ∃ su ∨ sono immediate conseguenze del significato dei simboli logici. Mentre è pure ovvio che siano logicamente valide ∀xA ∨ ∀xB → ∀x(A ∨ B) ∃x(A ∧ B) → ∃xA ∧ ∃xB, non valgono le implicazioni inverse. Se ad esempio U è un insieme con due elementi {a, b} e l’interpretazione di P è {a} e l’interpretazione di Q è {b}, allora in questa interpretazione ∀x(P (x) ∨ Q(x)) è vero, mentre sono falsi sia ∀xP (x) (l’insieme di verità di P (x) non è tutto U ) sia ∀xQ(x). Esercizio. Si trovi un’interpretazione in cui ∃xA∧∃xB è vero e ∃x(A∧B) è falso. Sono particolarmente importanti le leggi che regolano i rapporti tra quantificatori e condizionale. Mentre è facile convincersi che la distributività di ∀ su → 3 Se si scegliesse come U l’insieme di tutte le creature della fantasia, non si potrebbe pretendere, come non si pretende, che ivi valgano tutte le leggi della logica. 4 Sarebbero possibili condizioni meno forti sull’eventuale presenza di y in A(x), che tuttavia devono sempre evitare che si verifichi il fenomeno di stravolgimento di senso illustrato a proposito della particolarizzazione, e che non è il caso di approfondire. 144 ∀x(A → B) → (∀xA → ∀xB) è logicamente valida, l’inversa non lo è. Per trovare un controesempio, si deve pensare ad un’interpretazione in cui ∀xP (x) → ∀xQ(x) sia vero semplicemente perché ∀xP (x) è falso, mentre non è vero ∀x(P (x) → Q(x)). L’insieme U = {a, b, c} con {a, b} per l’insieme di verità di P (x) e {b, c} per l’insieme di verità di Q(x) risponde allo scopo. Se A non contiene x libera, allora ∀x(A → B(x)) ≡ A → ∀xB(x) e ∃x(A → B(x)) ≡ A → ∃xB(x). Per verificare la prima, dato un U qualsiasi e supposto che A sia un enunciato, distinguiamo due casi. Se A è falso, A → ∀xB(x) è vero, ma d’altra parte anche ∀x(A → B(x)) è vero perché l’insieme di verità di A → B(x), che è sempre soddisfatta se A è falso, è tutto U . Se A è vero, l’insieme di verità di A → B(x) è uguale all’insieme di verità di B(x). Se è uguale a U , ∀x(A → B(x)) è vero, ma anche ∀xB(x) lo è, e cosı̀ pure A → ∀xB(x). Se non è uguale a U si ha falso da entrambi i lati. 2 Queste leggi esprimono un caso particolare della possibilità di mettere il quantificatore nella posizione in cui il suo raggio d’azione esplica la sua funzione effettiva, sulle occorrenze libere della variabile (spostarlo all’indentro). Altri casi analoghi sono le leggi ∀x(A ∨ B(x)) ≡ A ∨ ∀xB(x) e ∃x(A ∧ B(x)) ≡ A ∧ ∃xB(x) se x non occorre libera in A. Dello stesso tipo, ma più sorprendenti forse sono le leggi ∀x(A(x) → B) ≡ ∃xA(x) → B e ∃x(A(x) → B) ≡ ∀xA(x) → B 145 !!! se x non occorre libera in B. La prima legge corrisponde al seguente uso linguistico: quando si dice che qualche cosa, espressa da B, dipende solo dal fatto che (l’insieme di verità di) A non sia vuoto, e non da un particolare elemento (come sarebbe se x occorresse in B e dovesse soddisfarla), allora si può enfatizzare che qualunque elemento va bene. Se si afferma “se uno ha un amico è felice” ∃xA(x, y) → F (y) - si vuol dire che qualunque sia l’amico, anche un cane, porta felicità (a y). Per la dimostrazione, si supponga ∃xA(x) → B vero, quindi B vero o ∃xA(x) falso. Se B è vero, allora l’insieme di verità di A(x) → B è tutto l’universo, perché per ogni elemento il condizionale ha il conseguente vero. Se ∃xA(x) è falso, di nuovo l’insieme di verità di A(x) → B è tutto l’universo, perché per ogni elemento il condizionale ha l’antecedente falso. Se invece ∃xA(x) → B è falso, allora B è falso e ∃xA(x) è vero, quindi almeno un elemento soddisfa A. Quando si esamina la formula A(x) → B, per questo elemento si ha vero-falso per il condizionale, che risulta falso, e quindi l’insieme di verità di A(x) → B non è tutto l’universo e ∀x(A(x) → B) è falso. 2 L’altra analoga legge si ricava nello stesso modo; se ∃x(A(x) → B) è vero in U , allora qualche elemento di U soddisfa A(x) → B; se B è vero, anche ∀xA(x) → B lo è; se A(x) non è soddisfatto da questo elemento, allora ∀xA(x) è falso e ∀xA(x) → B è vero. Se ∃x(A(x) → B) è falso, per qualunque elemento A(x) → B non è soddisfatta, quindi il calcolo del condizionale porta a un vero-falso, e A(x) deve essere soddisfatta e B deve essere falso; ma allora ∀xA(x) è vero e B è falso e ∀xA(x) → B falso. 2 Le equivalenze che permettono di spostare all’interno i quantificatori permettono anche di spostarli all’esterno; si ottiene cosı̀ che ogni formula è equivalente ad una formula in cui tutti i quantificatori sono all’inizio - e formano il cosiddetto prefisso - seguiti da una formula senza quantificatori detta matrice; una formula scritta in questo modo di dice in forma prenessa 5 . Ad esempio ∀xP (x)∨∀xQ(x) → ∀x(P (x)∨Q(x)) è equivalente (esercizio) a ∃x∃y∀z(P (x) ∨ Q(y) → P (z) ∨ Q(z)). Esistono altre forme prenesse della stessa formula, a seconda dell’ordine in cui si esportano i quantificatori. 5 L’interesse di tale trasformazione sta nel suo essere il passo preliminare di un’elaborazione su cui si basano i dimostratori automatici più efficienti. 146 Leggi logiche notevoli 2 ∀x¬A ↔ ¬∃xA interdef inibilità dei quantif icatori ¬∀x¬A ↔ ∃xA ∀xA ↔ ¬∃x¬A ∀xA(x) → A(t) particolarizzazione (t ammissibile) A(t) → ∃xA(x) generalizzazione esistenziale ” ∀xA(x) ↔ ∀yA(y) rinomina ∃xA(x) ↔ ∃yA(y) rinomina ∀x(A ∧ B) ↔ ∀xA ∧ ∀xB distributività di ∀ su ∧ ∃x(A ∨ B) ↔ ∃xA ∨ ∃xB distributività di ∃ su ∨ ∀xA ∨ ∀xB → ∀x(A ∨ B) distributività parziale di ∀ su ∨ ∃x(A ∧ B) → ∃xA ∧ ∃xB distributività parziale di ∃ su ∧ ∀x(A → B) → ∀xA → ∀xB distributività parziale di ∀ su → ∀x(A → B(x)) ↔ A → ∀xB(x) (x non libera in A) ∃x(A → B(x)) ↔ A → ∃xB(x) (x non libera in A) ∀x(A ∨ B(x)) ↔ A ∨ ∀xB(x) (x non libera in A) ∃x(A ∧ B(x)) ↔ A ∧ ∃xB(x) (x non libera in A) ∀x(A(x) → B) ↔ ∃xA(x) → B (x non libera in B) ∃x(A(x) → B) ↔ ∀xA(x) → B (x non libera in B) ∀x∀yA(x, y) ↔ ∀y∀xA(x, y) scambio dei quantif icatori ∃x∃yA(x, y) ↔ ∃y∃xA(x, y) scambio dei quantif icatori 11.1 Esercizi 1. Trasformare in forma prenessa le seguenti formule: ∀x∃yR(x, y) ∧ (∃xP (x) ∨ ∃xQ(x)) ∀x∃yR(x, y) ∨ (∃xP (x) ∧ ∃xQ(x)) ∀xP (x) ∨ ∀x(Q(x) → ∃zR(x, z)) ∀x(P (x) ∨ ∀xQ(x)) → ∃x(P (x) ∨ Q(x)). 2. Dedurre la generalizzazione esistenziale dalla particolarizzazione universale e da De Morgan generalizzata. 147 12 Quantificatori e dimostrazioni Completata la presentazione del linguaggio dei predicati possiamo rivedere alcuni casi di dimostrazioni; quelli trattati finora riguardavano anche formule contenenti variabili, ma i passaggi logici discussi erano solo quelli di tipo proposizionale, glissando sulla gestione delle variabili. Le frasi matematiche presenti nelle premesse e conclusioni di una dimostrazione sono rappresentate da enunciati di linguaggi predicativi, mentre i passaggi intermedi di solito sono formule, formule algebriche1 o loro combinazioni proposizionali, con variabili libere; si tratta di vedere come si fa a togliere e (ri)mettere i quantificatori. Queste mosse sono le sole da aggiungere; per il resto restano valide tutte le regole logiche e le strategie già considerate, visto che le regole di inferenza che rispettano la relazione di conseguenza logica valgono anche quando le lettere indicano formule di linguaggi predicativi. Riprendiamo l’esempio di se x è divisibile per 2, allora x + 1 non è divisibile per 2, che in simboli diventa, come abbiamo visto, ∀x(∃y(x = 2y) → ¬∃y(x + 1 = 2y)). Per dimostrare questo enunciato, dimostriamo la formula ∃y(x = 2y) → ¬∃y(x + 1 = 2y), quantificando alla fine universalmente la variabile x trattata in senso universale nel corso della dimostrazione. Per dimostrare un condizionale, assumiamo come premessa l’antecedente e deduciamo il conseguente. Data ∃y(x = 2y), diciamo “sia c un elemento tale che x = 2c” e scriviamo x = 2c, dove c è una nuova costante. 1 Una definizione generale di “formula algebrica” potrebbe essere “formula atomica con predicato = o < e termini complessi”. 148 Si dice che x = 2c è ottenuta per esemplificazione esistenziale. La mossa riassume il ragionamento “introduciamo un nome temporaneo per uno2 di questi elementi che soddisfano la formula x = 2y”, nome che non può essere uno di quelli disponibili nell’alfabeto perché non si sa quale sia questo elemento3 . Ora da x = 2c occorre dedurre ¬∃y(x + 1 = 2y). La forma negativa suggerisce di fare una dimostrazione per assurdo; si assume quindi ∃y(x + 1 = 2y). Di nuovo, sia d una nuova costante, per cui x + 1 = 2d. d non solo deve essere nuova non solo rispetto a quelle del linguaggio originario, ma anche rispetto a quelle introdotte nel corso dell’argomentazione; in attesa di ulteriori elaborazioni non si sa infatti e non si può dire se l’elemento sia lo stesso o diverso4 . Ora occorre svolgere le conseguenze di x = 2c ∧ x + 1 = 2d. c e d vengono da due mosse indipendenti che non permettono di sapere come sono fra loro i due elementi cosı̀ denotati; si devono quindi considerare tutte le possibilità, che c = d, che c < d, che d < c. c = d porta a una contraddizione x = x + 1; d < c porta a una contraddizione x + 1 < x; c < d porta, per sottrazione, a 1 = 2(d − c) ≥ 2; in ogni caso una contraddizione, a partire da ∃y(x + 1 = 2y), e da x = 2c, quindi ¬∃y(x + 1 = 2y), come si voleva dimostrare5 . ¬∃y(x + 1 = 2y) è stata dedotta da x = 2c, ma nella conclusione non si parla di c, utilizzata come appoggio nel ragionamento; il che è bene, perché non sarebbe opportuno concludere un teorema con una formula in cui occorre un elemento sconosciuto. D’altra parte l’obiettivo della dimostrazione, fissato 2 In questo esempio particolare ce ne può essere solo uno, ma in generale, col quantificatore esistenziale, non si sa quanti ≥ 1 ce ne sono. 3 Siccome c dipende da x, si dovrebbe piuttosto avere una funzione di x, o una notazione del tipo cx , che però sarebbe inutilmente pesante. 4 Se alla fine dovesse risultare che d è uguale a c, vuol dire che si sono attributi due nomi allo stesso elemento, che non è inusuale, sia nella vita comune sia in matematica, ogni volta che si dimostra che due termini sono uguali, ad esempio 0 = 0 + 0. 5 Ripasso di logica proposizonale: se da p e q segue una contraddizione C, p ∧ q → C, ne segue ¬(p ∧ q), le due proposizioni sono incompatibili, ma quale salvare? ¬(p ∧ q) è equivalente sia a p → ¬q sia a q → ¬p. Tuttavia dallo svolgimento della dimostrazione si vede che in realtà si è dimostrato l’equivalente, per importazione/esportazione, p → (q → C), da cui p → (¬C → ¬q) e quindi p → ¬q (perché?), e la scelta è dunque implicita nell’impostazione della dimostrazione. 149 all’inizio, non contemplava elementi sconosciuti, ma enunciati determinati. E infine nella dimostrazione non si è usata alcuna proprietà di c, se non il fatto che x = 2c. Si conclude allora che ¬∃y(x + 1 = 2y) è stata in realtà dedotta da ∃y(x = 2y). 26 Quest’ultimo passaggio tecnicamente chiude l’applicazione della regola dell’esemplificazione esistenziale, che copre tutti i passi dal momento in cui si dice “sia c un elemento tale che x = 2c” fino a quando scompare la c. Esso può sembrare diverso da una meccanica applicazione di una regola sintattica (una o due premesse e una conclusione immediata). Prima di discutere questo fatto, vediamo un altro esempio: dimostriamo che se un numero è divisibile per 4 allora è divisibile per 2. In questo caso l’elemento sconosciuto apparentemente si mantiene fino alla fine, nella conclusione, ed allora deve essere eliminato da questa con un’applicazione della generalizzazione esistenziale. Da ∃y(x = 4y) si passa a x = 4c x = (2 · 2)c x = 2(2c) Di qui si vede che x è divisibile per 2, ma non si può terminare con questa formula. Per generalizzazione esistenziale invece, considerata la formula x = 2(2c) del tipo A(t), con A(y) uguale a x = 2y e t uguale a 2c, si può allora dedurre ∃y(x = 2y), quest’ultimo passaggio come applicazione della generalizzazione esistenziale, per concludere ∃y(x = 4y) → ∃y(x = 2y) 6 La dimostrazione termina poi scrivendo prima ∃y(x = 2y) → ¬∃y(x+1 = 2y) e quindi poiché x era qualunque, ∀x(∃y(x = 2y) → ¬∃y(x + 1 = 2y)). 150 e ∀x(∃y(x = 4y) → ∃y(x = 2y)). 2 Il problema logico della regola di esemplificazione esistenziale consiste nel fatto che A(c) non è conseguenza logica di ∃yA(y), e quindi nella successione di formule che costituiscono la proposta dimostrazione non ogni formula è conseguenza logica delle precedenti (o un assioma del dominio in oggetto o una legge logica). A(c) non è conseguenza logica di ∃yA(y) perché può succedere che in un’interpretazione ∃yA(y) sia vero ma c non sia uno degli elementi che soddisfano A. Ad esempio ∃y(0 < y) è vero in N, ma se c denota 0 allora 0 < c è falso. È vero che noi affermiamo A(c), ma questa si presenta come una nuova assunzione su c, non come una conseguenza di ∃yA(y). Si può tuttavia dimostrare che, nelle condizioni della regola applicata a !!! ∃yA(y), se B è una formula che non contiene c, e se B è conseguenza logica di A(c) allora B è conseguenza logica di ∃yA(y) - nonostante A(c) non sia conseguenza logica di ∃yA(y). Noi facciamo vedere che la regola di esemplificazione esistenziale si può giustificare con una serie di regole logiche usuali, nel senso che le sue applicazioni possono essere sostituite da altri ragionamenti che non ne fanno uso. Consideriamo di nuovo l’esempio di ∃y(x = 2y) → ¬∃y(x + 1 = 2y). Se si ricorda la dimostrazione precedente, il problema è sempre quello di togliere i quantificatori, in modo da poter manipolare poi le formule atomiche che si trovano nell’antecedente e nel conseguente. Poiché y non è libera nel conseguente, si può scrivere in modo equivalente ∀y(x = 2y → ¬∃y(x + 1 = 2y)); come nell’esempio dell’amico che rende felici, che può essere qualunque, anche ora si dice che y può essere qualunque, purché soddisfi poi l’antecedente x = 2y. Allora y è trattata in questa versione della dimostrazione come una variabile universale. Data una y qualunque, occorre dimostrare che 151 x = 2y → ¬∃y(x + 1 = 2y), ovvero x = 2y → ∀y(x + 1 6= 2y). Il quantificatore del conseguente può essere spostato nel prefisso, dopo aver eseguito un’opportuna rinomina, e la formula da dimostrare è equivalente a ∀z(x = 2y → x + 1 6= 2z); quindi possiamo provare a dimostrare x = 2y → x + 1 6= 2z, con tutte le variabili intese in senso universale. Per assurdo, assumiamo la negazione del condizionale, quindi x = 2y ∧ x + 1 = 2z, e con gli stessi calcoli fatti sopra, con y e z al posto rispettivamente di c e d, arriviamo a una contraddizione. Abbiamo quindi x = 2y → x + 1 6= 2z, e quantificando universalmente ∀x∀y∀z(x = 2y → x + 1 6= 2z), da cui con le leggi logiche pertinenti ∀x(∃y(x = 2y) → ∀z(x + 1 6= 2z)). 2 Si noti che di solito nel gergo matematico, dove non si usa indicare i quantificatori, attraverso un’interpretazione (corretta) dell’enunciato da dimostrare si imposta direttamente proprio se x = 2y, allora x + 1 6= 2z. Altro esempio. Per dimostrare ∃y(x = 4y) → ∃y(x = 2y) 152 si trasformi la formula nell’equivalente ∀y(x = 4y → ∃y(x = 2y)) e si provi a dimostrare x = 4y → ∃y(x = 2y). Partendo da x = 4y si fanno gli stessi passaggi di prima, x = (2 · 2)y, x = 2(2y) e quindi con la generalizzazione esistenziale ∃y(x = 2y). 2 Un altro problema delle esemplificazioni esistenziali, non logico ma pratico, è che non c’è l’abitudine di usare coerentemente costanti, ma spesso si utilizzano le variabili. In riferimento all’esempio precedente, dato ∃y(x = 2y) si propone: “sia y un elemento tale che x = 2y”. L’uso di variabili è legittimo, ma richiede diverse cautele. La variabile y di “sia y tale che A(y)”, a seguito di ∃yA(y), non deve comparire libera in eventuali altre formule già utilizzate nella dimostrazione, e che pongono vincoli sull’elemento denotato da y, mentre di questo si sa solo, e si vuole usare solo il fatto che soddisfa A(y). Nel caso in esame, ∃y(x = 2y) è la prima assunzione da cui si parte, quindi non si presenta questo problema, altrimenti si deve usare una nuova variabile e dire “sia w tale che A(w)” o fare prima una rinomina di ∃yA(y). Questo ha anche il vantaggio, se la variabile è insolita, di ricordare il suo status speciale. Il termine usato per l’esemplificazione esistenziale deve essere appunto un termine, vale a dire un’espressione che denota un elemento (sconosciuto salvo per il fatto che deve soddisfare A) delle interpretazioni. Che il simbolo nuovo sia un c non presente nell’alfabeto, o un simbolo w presente nell’alfabeto ma mai usato, e si chiami di conseguenza costante o variabile non fa nessuna differenza, se lo si gestisce in modo corretto. Se è una variabile, questa variabile libera ha un senso particolare, non universale, condizione che deve essere tenuta presente nel corso di tutta la dimostrazione, finché essa non scompare. La variabile introdotta in un’esemplificazione esistenziale scompare nello stesso modo come abbiamo visto scomparire la c, ad esempio per generalizzazione esistenziale7 . 7 È in genere il destino più comune delle variabili introdotte a partire da un quantificatore esistenziale. 153 La dimostrazione prosegue come sopra: si deve dimostrare che da x = 2y segue ¬∃y(x + 1 = 2y). Per assurdo, si assume x = 2y e ∃y(x + 1 = 2y) e di nuovo si applica l’esemplificazione esistenziale. La regola richiede che si utilizzi una variabile diversa da quelle che occorrono libere nella parte precedente, in questo caso da y. Si perviene cosı̀ a x = 2y ∧ x + 1 = 2z da cui segue una contraddizione con gli stessi calcoli di sopra, con y e z al posto rispettivamente di c e d. 2 Altro esempio. La dimostrazione di ∃y(x = 4y) → ∃y(x = 2y) si svolge come sopra assumendo ∃y(x = 4y) ed esemplifcando: sia y uno di questi, per cui x = 4y x = (2 · 2)y x = 2(2y) ∃y(x = 2y), quest’ultima per generalizzazione esistenziale. 2 È come se il quantificatore ∃y, staccato dall’ipotesi, restasse a seguire dall’alto i vari passi e trasformazioni della sua y, in questo caso in 2y, per poi alla fine ripiombare nella posizione dovuta. Useremo sempre le costanti per le esemplificazioni esistenziali, ma si deve essere avvertiti della possibilità di incontrare l’uso di variabili. Talvolta si incontrano soluzioni intermedie, ad esempio simboli come x0 , k che sembrano diversi dalle variabili8 . La regola relativa all’eliminazione temporanea del quantificatore esistenziale afferma dunque che si può esemplificare un’affermazione esistenziale ∃yA(y) con A(c) o A(w) se per questa via si perviene a una conclusione che non contiene la costante o non contiene libera la variabile usata per l’esemplificazione. Finché la costante o la variabile introdotte come esemplificazione di un quantificatore esistenziale non sono scomparse, l’argomento è incompleto, e 8 “Teorema: se esiste un massimo interno al dominio, esiste un punto in cui la derivata si annulla. Dimostrazione: sia x0 un punto di massimo . . . ”. “Teorema: se x è pari allora . . . Dimostrazione: sia x = 2k . . . ”. 154 non terminato, come in sospeso, per il riferimento a questo elemento sconosciuto. La costante o variabile può scomparire o per passaggi proposizionali (come sopra, una dimostrazione per assurdo di un altro enunciato, oppure per il taglio di un modus ponens), o per generalizzazione esistenziale. L’affermazione ∃yA(y) introdotta per generalizzazione esistenziale comporta un’affermazione apparentemente più debole, generica, rispetto a A(t), che sembra indicare esplicitamente un elemento con la proprietà A, ma nelle applicazioni come si è visto, se t deriva da un’esemplificazione esistenziale, allora in realtà anche la sua denotazione è vaga. Quello che bisogna assolutamente evitare è di quantificare universalmente !!! una variabile che sia stata introdotta come esemplificazione di un quantificatore esistenziale (in questo l’uso di una costante ha ovvi vantaggi). Un esempio di errore clamoroso dovuto a una simile disattenzione è la seguente dimostrazione di ∃x∀y(x < y) a partire da ∀x∃y(x < y). Assunto ∀x∃y(x < y), per particolarizzazione si ha ∃y(x < y); per esemplificazione esistenziale, sia y tale che x < y. Se ora dimenticandosi della natura esistenziale di y si affermasse ∀y(x < y) si potrebbe concludere per generalizzazione esistenziale che ∃x∀y(x < y). Ma questa conclusione non è conseguenza della premessa, come si vede dal fatto che la premessa è ad esempio vera negli interi, mentre la conclusione non lo è. A differenza di ∀x∀y e ∃x∃y, non, si possono in generale scambiare tra !!! loro i quantificatori in ∀x∃y e ∃x∀y 9 . Anche la gestione della introduzione del quantificatore universale è più delicata di quanto finora abbiamo lasciato intendere. Si possono legittimamente (ri)quantificare universalmente le variabili libere che derivano per particolarizzazione da un quantificatore universale, ma non è questa tutta la storia. A volte sembra di lavorare con varibili libere che non derivano da una particolarizzazione, e che pure hanno un significato universale. La vera condizione è che le variabili non occorrano libere nelle premesse. !!! Ad esempio, se si parte da 0 < x e con un argomento corretto, utilizzando le proprietà dei numeri reali, si conclude ∃y(x = y 2 ), non si può affermare ∀x∃y(x = y 2 ) - c’è una condizione restrittiva su x stabilita dalla premessa. In realtà l’argomento che porta da 0 < x a ∃y(x = y 2 ) stabilisce 0 < x → 9 Capita con prefissi diversi di due forme premesse equivalenti di una stessa formula. 155 ∃y(x = y 2 ) per x qualunque, senza alcuna premessa (salvo le proprietà dei numeri reali espresse da enunciati, senza variabili libere). Quindi x non è libera nelle premesse della derivazione di quest’ultima formula, che non ci sono, e si può correttamente quantificarla in ∀x(0 < x → ∃y(x = y 2 )). Un altro caso del genere si ha nell’esempio precedente “se x è pari allora x + 1 è dispari”. La dimostrazione che da “x è pari” porta a “x + 1 è dispari” stabilisce “x è pari → x + 1 è dispari” senza premesse che non siano gli assiomi dei numeri naturali, espressi da enunciati. Quindi si può quantificare universalmente la x. Un esempio di errore dovuto a cattiva gestione della quantificazione universale è il seguente. Da ∀x∃y(x < y), per particolarizzazione si ha ∃y(x < y) e per esemplificazione, sia c tale che x < c. Se ora si quantifica universalmente x si ottiene ∀x(x < c) e per generalizzazione esistenziale ∃y∀x(x < y). La conclusione, che afferma l’esistenza di un massimo per <, è palesemente falsa nei naturali, dove invece la premessa è vera. Ma la premessa è un enunciato, e sembrerebbe quindi che non vi fossero variabili libere nelle premesse. La spiegazione sta nel fatto che quanto si dice “sia c tale che x < c” inizia, come !!! abbiamo detto sopra, un argomento particolare, una sorta di dimostrazione a parte che non si considera conclusa finché tale c non sparisce legittimamente. In questa dimostrazione subordinata, x < c è una premessa, e x è libera in x < c, e non è lecito perciò quantificare universalmente la x. Queste sottigliezze sono precisate e rese di agevole applicazione nei sistemi di regole che costituiscono i calcoli logici per i linguaggi predicativi, ad esempio il calcolo della deduzione naturale, che rientrano negli argomenti non propedeutici. Esercizio. Si deduca con una dimostrazione la risposta all’esercizio 4 di 10.6. 156 13 Sillogismi I sillogismi sono forme di ragionamento studiate fin dall’antichità che coinvolgono enunciati di linguaggi predicativi, ancorché di un tipo semplificato; molti argomenti del linguaggio comune si presentano in tale forma, e rappresentano perciò un utile esercizio, sia di formalizzazione sia di deduzione, anche al di fuori della matematica. Gli enunciati che intervengono nei sillogismi contengono solo predicati monadici, e inoltre sono di una forma particolare. Gli enunciati presi in considerazione e combinati tra loro affermano sempre una delle seguenti circostanze: che tutti quelli che hanno una proprietà P hanno anche la proprietà Q; che nessuno di quelli che hanno una proprietà P hanno la proprietà Q; oppure che qualcuno che ha la proprietà P ha anche Q, o infine che qualcuno con la proprietà P non ha Q. Enunciati di questa forma si chiamano, nella tradizione logica, proposizioni categoriche1 . A prima vista si direbbe che il loro studio costituisca un’analisi dei quantificatori, ma è forse più corretto dire che mette in evidenza e sfrutta alcune relazioni insiemistiche della sola intersezione, e precisamente A ∩ B = A, A ∩ B = ∅, A ∩ B 6= ∅, ovvero ovvero ovvero A⊆B A e B sono disgiunti A e B non sono disgiunti. Le proposizioni categoriche venivano scritte e lette nel seguente modo, dove a fianco mettiamo la versione insiemistica e quella logica moderna: A E I O Tutti i P sono Q Nessun P è Q Qualche P è Q Qualche P non è Q P P P P ⊆Q ∩Q=∅ ∩ Q 6= ∅ 6⊆ Q ∀x(P (x) → Q(x)) ∀x(P (x) → ¬Q(x)) ∃x(P (x) ∧ Q(x)) ∃x(P (x) ∧ ¬Q(x)). Le lettere a sinistra sono la sigla con cui venivano indicate le corrispondenti 1 Si ammetteva un’estensione a proposizioni contenenti termini singolari come “Socrate” introducendo un predicato S per “socraticità”, con un unico elemento, e traducendo “Socrate è mortale” con “Tutti quelli che hanno la proprietà S sono mortali”. 157 proposizioni2 : A ed E sono proposizioni affermative, rispettivamente universale ed esistenziale; I e O sono negative, rispettivamente universale ed esistenziale. Le parole “tutti”, “nessuno”, “qualche” diventavano superflue, sostituite dalla sigla prefissa; scrivendo “A : P Q” si intendeva la frase “tutti i P sono Q”, con “I : P Q” la frase “qualche P è Q”, e cosı̀ via. Il simbolismo logico come si vede ha una lunga storia. Siccome c’era sempre solo una variabile, non si è sentita l’esigenza di indicarla. Il verbo era sempre il verbo “essere”; tuttavia noi sappiamo che nei casi di quantificatore universale (ristretto a P ) esso viene reso dal connettivo condizionale e in quelli particolari dal connettivo congiunzione. 13.1 Sillogismi categorici I sillogismi categorici3 sono inferenze in cui occorrono due premesse e una conclusione, tutte e tre proposizioni categoriche, costruite con tre predicati, di cui uno inevitabilmente occorre due volte nelle premesse, per stabilire un legame, e si possono presentare ad esempio nel seguente modo: I : E: O: P S S M M P. Il predicato S si chiama di solito soggetto, il predicato P predicato e il predicato M termine medio. Un sillogismo è valido se la conclusione è conseguenza logica delle premesse. Tutti i possibili sillogismi si caratterizzano per due aspetti; il primo è il tipo di proposizioni categoriche che nell’ordine lo costituiscono, si chiama modo, ed è rappresentato da tre lettere; ad esempio il modo del sillogismo di sopra è I E O. 2 I simboli per i quantificatori vengono probabilmente da questa tradizione di usare le lettere per indicare il tipo di quantificazione. In tutte le lingue dei logici moderni, italiano, inglese, tedesco, “esiste” inizia con “e”, mentre “tutti” inizia con “a” in tedesco e inglese. Le lettere A e I sono le prime vocali di affirmo, E e O quelle di nego. 3 D’ora in avanti diremo soltanto “sillogismi”. 158 Il secondo parametro è la disposizione dei tre predicati nelle tre proposizioni, e si chiama figura. Se si standardizza le presentazione, ad esempio chiedendo che la conclusione contenga sempre la coppia S P nell’ordine - da cui il nome di questi due predicati4 -, osservando che il termine medio deve sempre comparire in entrambe le premesse - altrimenti si vede facilmente che il sillogismo non è valido5 - e che l’ordine delle premesse non è rilevante (per la terminologia, si chiama premessa maggiore quella che contiene S, e minore l’altra) si ottengono in tutto quattro figure: SM P M SM MP MS MP MS P M. I sillogismi possibili sono 256 (esercizio), ma quelli validi solo 156 . Dimostrare la validità di un sillogismo equivale a dimostrare che la conclusione è conseguenza logica delle premesse, e questo si può fare con la derivazione della conclusione dalle premesse con passaggi che conservano la conseguenza logica. Per dimostrare che un sillogismo non è valido, quando non lo è, non basta non riuscire a costruire la derivazione dalle premesse, occorre trovare un controesempio. Per svolgere le dimostrazioni, occorre usare solo, sulle premesse, la regola di particolarizzazione sugli enunciati universali e quella di esemplificazione esistenziale sugli enunciati esistenziali; questa conviene applicarla prima della particolarizzazione. Quindi si applicano leggi proposizionali e infine i quantificatori si reintroducono o con la generalizzazione esistenziale, se la conclusione è esistenziale, o con quella universale, se la conclusione è universale. Esempi Derivazione della conclusione dalle premesse del sillogismo valido 4 Sono grammaticalmente il soggetto e il predicato della conclusione. A meno che la conclusione non coincida con una premessa. 6 Una lunga controversia ha riguardato il fatto di considerare o no predicati vuoti, decisione che influenza la validità o meno di certi sillogismi. Nell’antichità si preferiva evitarli; nella trattazione moderna prevale l’interpretazione cosiddetta booleana, che ammette predicati vuoti. Sono 15 i sillogismi validi nell’interpretazione booleana. 5 159 E: I : O: P S S M M P, ovvero ∀x(P (x) → ¬M (x)) ∃x(S(x) ∧ M (x)) ∃x(S(x) ∧ ¬P (x)). Presentiamo la dimostrazione nella seguente tabella, in una colonna in versione formale, con la successione di formule, nell’altra con la loro lettura in linguaggio naturale. Linguaggio predicativo ∃x(S(x) ∧ M (x)) S(c) ∧ M (c) Linguaggio naturale Qualche S è un M. Sia c un S che è anche un M. S(c) Allora c è un S e M (c) c è un M. ∀x(P (x) → ¬M (x)) P (c) → ¬M (c) N essun P è M. Se c è un P allora c non è un M, o Se c fosse un P non sarebbe un M. per contrapposizione M (c) → ¬P (c) Se c è un M allora non è un P. da questo e da M (c) ¬P (c) M a siccome c è un M, allora c non è un P. da questo e da S(c) S(c) ∧ ¬P (c) Siccome c è un S, c è un S che non è un P. ∃x(S(x) ∧ ¬P (x)) Qualche S non è un P. 160 In modo del tutto analogo, si dimostri (esercizio) la validità del sillogismo: A: O : O: P S S M M P, ovvero ∀x(P (x) → M (x)) ∃x(S(x) ∧ ¬M (x)) ∃x(S(x) ∧ ¬P (x)). Un altro esempio di sillogismo valido è il seguente: A: I : I: M S M P S P, ovvero ∀x(M (x) → S(x)) ∃x(M (x) ∧ P (x)) ∃x(S(x) ∧ P (x)). con la dimostrazione: 161 Dimostrazione Linguaggio predicativo ∃x(M (x) ∧ P (x)) M (c) ∧ P (c) Linguaggio naturale Qualche M è P. Sia c un M che è anche un P. M (c) c è un M. P (c) c è un P. ∀x(M (x) → S(x)) T utti gli M sono S. M (c) → S(c) Se c è un M allora c è un S. S(c) Siccome c è un M, c è un S. S(c) ∧ P (c) Siccome c è un P c è un S che è anche un P. ∃x(S(x) ∧ P (x)) Qualche S è un P. Valido è anche il sillogismo A: A : A: S M M P S P, ovvero ∀x(S(x) → M (x)) ∀x(M (x) → P (x)) ∀x(S(x) → P (x)), 162 con la seguente dimostrazione: Dimostrazione Linguaggio predicativo ∀x(S(x) → M (x)) S(x) → M (x) Linguaggio naturale T utti gli S sono M. U no che sia un S è anche un M. ∀x(M (x) → P (x)) T utti gli M sono P. M (x) → P (x) U no che sia un M è anche un P. per transitività da 2 e 4 S(x) → P (x) U no che sia un S è anche un P. ∀x(S(x) → P (x)) T utti gli S sono P. Si noti che “Qualche S è P ” sembra più debole di “Tutti gli S sono P ”, e quindi si potrebbe pensare che sia conseguenza delle stesse premesse. Invece il sillogismo A: A : I: S M M P S P, ovvero ∀x(S(x) → M (x)) ∀x(M (x) → P (x)) ∃x(S(x) ∧ P (x)), non è valido in quanto, se S è vuoto ∃x(S(x) ∧ P (x)) è falso, nonostante 163 ∀x(S(x) → P (x)) sia vero (da ∀x(S(x) → P (x)) segue ∃x(S(x) → P (x)) verificato da un elemento non appartenente a S - non ∃x(S(x) ∧ P (x)))7 . Per verificare che un sillogismo non è valido occorre trovare un controesempio, vale a dire un’interpretazione in cui le premesse sono vere e la conclusione falsa. Ad esempio il sillogismo ∀x(S(x) → M (x)) ∃x(M (x) ∧ P (x)) ∃x(S(x) ∧ P (x)) è falsificato dalla seguente interpretazione: U = {a, b, c}, S = {a}, M = {a, c}, P = {b, c}. Un argomento in linguaggio naturale8 si dice corretto se è un caso particolare di un sillogismo formale valido. Si consideri il seguente argomento: I progressisti sono sostenitori dello stato sociale Alcuni ministri del governo sono sostenitori dello stato sociale Quindi alcuni ministri sono progressisti. Si chiede se è corretto. Prima di proseguire, si prenda tempo (non troppo) e si dia una risposta. La maggior parte delle persone risponde sı̀. Un modo tradizionale di convincere che non lo è è quello di osservare: sarebbe come dire che siccome I cavalli sono veloci e Alcuni asini sono veloci allora Alcuni asini sono cavalli. “Sarebbe come dire” significa che se il primo argomento fosse corretto 7 Questo è un esempio di un sillogismo non valido nell’interpretazione booleana, mentre sarebbe valido se non fossero ammessi predicati vuoti. 8 O in un formalismo interpretato, ad esempio una dimostrazione aritmetica. 164 allora il sillogismo A: I : I: P S S M M P sarebbe valido e allora anche il nuovo argomento, della stessa struttura formale, dovrebbe essere corretto. Ma quest’ultimo ovviamente non lo è. Che non lo sia, e quindi che si sia esibito un controesempio, non è mai del tutto chiaro se gli esempi sono fatti in linguaggio naturale. Nessun insieme definito nel linguaggio naturale ha i confini esattamente delimitati senza ambiguità. Per questo i controesempi devono essere insiemi astratti, dove gli elementi e i non elementi sono individuati in maniera precisa e indiscutibile. Nel caso in oggetto, un controesempio è fornito da U = {a, b, c, d} con S = {c, d}, P = {a, b} e M = {a, b, c}. Un esempio dello stesso tipo è il seguente. L’inferenza Nessun triangolo rettangolo è equilatero Qualche triangolo isoscele è equilatero Quindi qualche triangolo rettangolo non è isoscele è corretta? Dopo aver risposto . . . , si consideri che sarebbe come dire Nessun cerchio quadrato è equilatero Qualche triangolo è equilatero Quindi qualche cerchio quadrato non è un triangolo conclusione che implica che esiste un cerchio quadrato. Oppure sarebbe come dire Nessun cane è un ruminante Qualche quadrupede è un ruminante Quindi qualche cane non è un quadrupede. Il sillogismo E: I : O: S P S M M P 165 non è valido se S è vuoto oppure se S ⊆ P . Nel valutare la correttezza logica di un argomento, non bisogna utilizzare nessuna conoscenza non esplicitata relativa ai predicati concreti che vi sono !!! coinvolti. Avevamo presentato a suo tempo un argomento di Lewis Carroll: a) I bambini sono illogici b) Le persone che sanno come trattare i coccodrilli non sono disprezzate c) Le persone illogiche sono disprezzate d) Quindi i bambini non sanno trattare i coccodrilli. Questo argomento non è in verità un sillogismo perché è formato da quattro proposizioni categoriche; tuttavia si può spezzare in due sillogismi concatenati; gli argomenti riducibili a catene di sillogismi si chiamano soriti . L’argomento di Carroll si può dimostrare corretto con la seguente scomposizione. Consideriamo prima l’argomento: b) Le persone che sanno come trattare i coccodrilli non sono disprezzate c) Le persone illogiche sono disprezzate e) Quindi le persone illogiche non sanno trattare i coccodrilli che è un sillogismo di modo EAE, figura P M S M valido, con M uguale a “essere disprezzato”, S uguale a “persone illogiche” e P uguale a “saper trattare i coccodrilli”. Combiniamo ora la conclusione e con a: a) I bambini sono illogici e) Le persone illogiche non sanno trattare i coccodrilli d) Quindi i bambini non sanno trattare i coccodrilli ottenendo sillogismo di modo AAA valido, e si ha la conclusione d. Dimostriamo che il sillogismo sopra considerato 166 E: A : E: P S S M M P ovvero ∀x(P (x) → ¬M (x)) ∀x(S(x) → M (x)) ∀x(S(x) → P (x)) è valido: Dimostrazione Linguaggio predicativo ∀x(P (x) → ¬M (x)) P (x) → ¬M (x) per contrapposizione M (x) → ¬P (x) ∀x(S(x) → M (x)) S(x) → M (x) per transitività di → S(x) → ¬P (x) ∀x(S(x) → ¬P (x)) Linguaggio naturale N essun P è M. U no che sia P non è M. Allora uno che sia M non è P. Ogni S è M. U no che sia un S è M. Quindi uno che sia un S non è P. N essun S è P. Esercizio. Si mostri che il sorite di Lewis Carroll si può anche spezzare in due sillogismi di cui il primo ha come premesse b) e c). Quale è la conclusione intermedia? 13.2 Diagrammi di Venn I tre predicati che intervengono in ogni sillogismo sono rappresentati da tre insiemi, come in figura, senza escludere a priori nessuna possibilità per quanto 167 riguarda le loro intersezioni (i loro complementi sono le regioni esterne ai cerchi). S '$ '$ P '$ &% &% &% M Nel disegno sono presenti diverse aree: S, S ∩ P , S ∩ M , S ∩ P ∩ M , S \ P , S \ M , S \ (P ∪ M ), . . . (completare per esercizio). Alcune possono essere vuote, altre no, a seconda degli insiemi, e di quanto su di essi stipulano le premesse. Le premesse dei sillogismi si riferiscono solo ad alcune delle aree e sono equivalenti all’asserzione che certe intersezioni sono vuote o non vuote: A:S E:S I: S O:S M M M M S ∩ (∼ M ) = ∅ S∩M =∅ S ∩ M 6= ∅ S ∩ (∼ M ) 6= ∅ e cosı̀ le proposizioni categoriche che coinvolgono altre coppie di predicati. Dato un sillogismo, se le aree corrispondenti a una sua proposizione risultano vuote le tratteggiamo, se non vuote mettiamo una crocetta all’interno. !!! Esempi Consideriamo il sillogismo: A: P O: S O: S ovvero 168 M M P ∀x(P (x) → M (x)) ∃x(S(x) ∧ ¬M (x)) ∃x(S(x) ∧ ¬P (x)). La prima premessa ci fa tratteggiare P ∩ (∼ M ), che deve essere vuota. La seconda premessa ci fa mettere una crocetta in S ∩ (∼ M ). Quest’area sarebbe composta di due parti, quella che interseca P e quella che non lo interseca; ma la prima è tratteggiata, in quanto S ∩ (∼ M ) ∩ P ⊆ P ∩ (∼ M ), già considerata; quindi la crocetta si mette in S ∩ (∼ M ) ∩ (∼ P ). S '$ '$ P ¢¢¢¢¢¢¢ ×'$ ¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢ ¢¢¢¢¢ ¢¢¢ &% &% &% M Ora si interpreta quello che dice la figura, come conseguenza delle due premesse, confrontandolo con quello che afferma la conclusione. La conclusione afferma che deve esserci una crocetta in S ∩ (∼ P ) e infatti la crocetta è stata disegnata in quell’area, come conseguenza delle due premesse; è stata messa prima di guardare la conclusione. Un altro sillogismo valido è E: P I: S O: S M M P ovvero ∀x(P (x) → ¬M (x)) ∃x(S(x) ∧ M (x)) ∃x(S(x) ∧ ¬P (x)). La prima premessa ci fa tratteggiare l’area P ∩ M che deve essere vuota 169 perché P ⊆ ∼ M . La seconda premessa ci fa mettere una crocetta nell’area S ∩ M , ma di fatto nell’area S ∩ M ∩ (∼ P ) perché S ∩ M ∩ P = ∅. S '$ '$ P '$ × &% &% &% M Come conseguenza si ha una crocetta in S ∩ (∼ P ), che è quello che afferma la conclusione: S ∩ (∼ P ) 6= ∅. Consideriamo ora un sillogismo non valido: A: S I: M I: S M P P ovvero ∀x(S(x) → M (x)) ∃x(M (x) ∧ P (x)) ∃x(S(x) ∧ P (x)). La prima premessa fa tratteggiare S ∩ (∼ M ) che è vuota essendo S ⊆ M . La seconda premessa ci fa mettere una crocetta in M ∩ P , ma questa è divisa in due sottoaree M ∩ P ∩ S e M ∩ P ∩ (∼ S), e non sappiamo dove mettere la crocetta. La si mette sulla linea di divisione delle due sottoaree, proprio !!! per indicare che non si sa in quale parte metterla. 170 '$ '$ S ¿¿¿ P ¿ ¿¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ ¿ '$ ¿ ¿ ¿ ¿ ¿ ¿ + &% &% &% M Ma la conclusione dice che dovrebbe esserci una crocetta in S ∩ P e questa indicazione precisa non è conseguenza delle premesse; la crocetta è sul bordo, non è comunque nell’interno dell’area S ∩ P , potrebbe essere in (∼ S) ∩ P . Per certe esemplificazioni particolari dei predicati in gioco risulta in effetti cosı̀, esiste un controesempio, anche se questo i diagrammi di Venn non lo esibiscono. Esercizio. Si usino i diagrammi di Venn per verificare che il sillogismo E: I : O: S P S M M P non è valido e trovare se possibile un controesempio in base a quanto suggerito dal diagramma. Per non solo dimostrare la validità dei sillogismi, ma trovare i controesempi in modo meccanico, soccorre un metodo che estende gli alberi di refutazione a enunciati predicativi. 171 14 14.1 Alberi di refutazione Regole per i quantificatori La tecnica degli alberi di refutazione si estende agli enunciati dei linguaggi predicativi aggiungendo le seguenti regole: • Se A è ∃xB, si introduce una nuova costante c e alla fine di ogni ramo non chiuso passante per A si appende alla foglia il successore B(c)1 , come nello schema [∃xB] .. . F ↓ B(c) • Se A è ¬∀xB, si introduce una nuova costante c e alla fine di ogni ramo non chiuso passante per A si appende alla foglia il successore ¬B(c), come nello schema [¬∀xB] .. . F ↓ ¬B(c) • Se A Se A è ∀xB, allora alla fine di ogni ramo non chiuso passante per A, per tutti i termini chiusi t1 , . . . , tn che occorrono in qualche enunciato del ramo, e tali che B(ti ) non occorre già nel ramo, si appendono alla foglia n + 1 nodi in serie, prima B(t1 ), . . . , B(tn ) e poi ancora ∀xB, !!! come nello schema 1 S’intende che se B non contiene la x libera B(c) è B. 172 [∀xB] .. . F ↓ B(t1 ) ↓ .. . ↓ B(tn ) ↓ ∀xB • Se A Se A è ¬∃xB, allora alla fine di ogni ramo non chiuso passante per A, per tutti i termini chiusi t1 , . . . , tn che occorrono in qualche enunciato del ramo, e tali che B(ti ) non occorre già nel ramo, si appendono alla foglia n + 1 nodi in serie ¬B(t1 ), . . . , ¬B(tn ), e poi ancora ¬∃xB, come !!! nello schema [¬∃xB] .. . F ↓ ¬B(t1 ) ↓ .. . ↓ ¬B(tn ) ↓ ¬∃xB 173 Se l’albero è inizializzato con un enunciato, tutti i nodi dell’albero sono etichettati con enunciati, di un linguaggio possibilmente arricchito con nuove costanti. Il ruolo dei letterali è ora svolto dagli enunciati atomici e dalle negazioni degli enunciati atomici. Basterebbero due regole, perché quelle per la negazione di un quantificatore sono ottenute considerando che ¬∀ è equivalente a ∃¬ e ¬∃ a ∀¬. Le prime due regole corrispondono all’esemplificazione esistenziale, le altre due alla particolarizzazione. Nell’applicazione della regola per ∃xB la costante deve essere diversa da quelle che occorrono già in enunciati del ramo - nuova perché le informazioni !!! disponibili non permettono di dire se l’elemento che esemplifica B sia uno già noto o no - ma non necessariamente diversa da quelle che sono solo su altri rami. Ogni ramo è una strada indipendente dalle altre; tuttavia per evitare confusioni è bene ogni volta prendere una costante che sia diversa da tutte quelle che occorrono in tutto l’albero. Il senso delle due ultime regole è il seguente; si vorrebbe sostituire a x tutti i termini chiusi; ma questi sono in generale infiniti, e neppure ben determinati, per il fatto che successive applicazioni delle altre regole ad altri nodi possono introdurre nuove costanti sui rami considerati; allora s’incomincia a sostituire i termini esplicitamente esistenti, ma si riscrive l’enunciato ∀xB in modo che quando eventualmente (se il ramo non si è nel frattempo chiuso) si torna a considerare l’enunciato, se nel frattempo si sono creati nuovi termini chiusi anche i nuovi vengano sostituiti (si veda l’esempio qui sotto). Se in una prima applicazione delle ultime due regole non esistono termini chiusi negli enunciati dell’albero, si introduce una nuova costante c e si sostituisce quella (ma si tratta di un’eccezione, da non confondere con la regola !!! per ∃; è come se ci fosse sempre una costante iniziale, ad esempio in c = c congiunta alla radice). In pratica, non c’è bisogno di riscrivere ∀xB, basta non marcarlo come già considerato e ricordarsi di tornare periodicamente a visitarlo. E quando tutti gli altri enunciati siano stati considerati e non ci siano altri termini da sostituire, lo si marca definitivamente per terminare. Esempi L’albero: 174 ¬(∀x(P (x) → Q(x)) → (∀xP (x) → ∀xQ(x)))1 ↓ ∀x(P (x) → Q(x))5 ↓ ¬(∀xP (x) → ∀xQ(x))2 ↓ ∀xP (x)4 ↓ ¬∀xQ(x)3 ↓ ¬Q(c) ↓ P (c) ↓ P (c) → Q(c) . & ¬P (c) Q(c) chiuso chiuso è chiuso. L’albero: ∃xP (x) ∧ ∀x(P (x) → ∃yQ(y)) ∧ ¬∃yQ(y)1 ↓ ∃xP (x)2 ↓ ∀x(P (x) → ∃yQ(y))3,7 ↓ ¬∃yQ(y)4,8 ↓ P (c) ↓ P (c) → ∃yQ(y)5 ↓ ¬Q(c) .& ¬P (c) ∃yQ(y)6 chiuso ↓ 175 Q(d) ↓ P (d) → ∃yQ(y) ↓ ¬Q(d) chiuso è chiuso. Sono state eseguite due applicazioni della regola per ∀ e ¬∃ a ∀x(P (x) → ∃yQ(y)) e a ¬∃yQ(y); la seconda scatta dopo che ∃yQ(y) ha prodotto Q(d), introducendo la nuova d. È quasi superfluo dire che, come si è fatto nei due esempi, conviene ap- !!! plicare prima le regole per ∃ e ¬∀ e dopo le regole per ∀ e ¬∃. Applicheremo il metodo degli alberi di refutazione solo a enunciati che non contengono simboli funzionali, sicché i termini chiusi potenziali si riducono !!! alle costanti. Anche con questa restrizione tuttavia non vale più la proprietà di terminazione, come mostra l’albero per l’enunciato ∀x∃yR(x, y) ∀x∃yR(x, y) ↓ ∃yR(c, y) ↓ R(c, c1 ) ↓ ∃yR(c1 , y) ↓ R(c1 , c2 ) ↓ ∃yR(c2 , y) ↓ .. . Valgono però le proprietà fondamentali di correttezza e completezza. Teorema 14.1.1 (Correttezza) Se l’albero di refutazione con radice A si chiude, allora A è insoddisfacibile. 176 I precendenti esempi di alberi chiusi verificano il primo che ∀x(P (x) → Q(x)) |= ∀xP (x) → ∀xQ(x) e il secondo che ∃xP (x)∧∀x(P (x) → ∃yQ(y)) |= ∃yQ(y). Teorema 14.1.2 (Completezza) Se A è insoddisfacibile, l’albero con radice A si chiude. La dimostrazione come nel caso proposizionale segue dal Lemma 14.1.1 Se l’albero di refutazione con radice A non si chiude, allora per ogni ramo non chiuso, finito e terminato, o infinito, esiste un modello di A. Considereremo solo alcuni esempi per mostrare come si definiscono le interpretazioni per i rami non chiusi, per enunciati che non contengono simboli funzionali. Esempio L’albero P (c) ∧ (∃xP (x) → ∃xQ(x) ↓ P (c) ↓ ∃xP (x) → ∃xQ(x) . & ¬∃xP (x) ∃xQ(x) ↓ ↓ ¬P (c) Q(d) chiuso mostra che l’enunciato P (c) ∧ (∃xP (x) → ∃xQ(x)) è soddisfacibile con un modello, dato dal ramo di destra, perché quello di sinistra è chiuso. L’interpretazione è definita nel seguente modo: l’universo è l’insieme delle costanti che occorrono in enunciati del ramo, in questo caso U = {c, d}; !!! quindi i predicati sono definiti in base a quali enunciati atomici occorrono sul ramo, in questo caso P = {c}, che deve rendere vero P (c), e Q = {d}, che rende vero Q(d). 177 Le proprietà di correttezza e completezza assicurano che quando l’albero termina, la risposta è quella giusta; inoltre, poiché se un albero si chiude esso si chiude dopo un numero finito di passi, in tutti i casi in cui la radice è insoddisfacibile l’albero lo rivela chiudendosi; quando la radice è soddisfacibile, può darsi che l’albero termini, e lo riveli, come può darsi che continui all’infinito, e non è detto che ci sia mai uno stadio in cui ci accorgiamo che l’albero andrà avanti a crescere all’infinito (altrimenti è come se sapessimo che non si chiude). Un metodo con queste caratteristiche si dice metodo di semidecidibilità e l’insieme degli enunciati insoddisfacibili è semidecidibile. 14.1.1 Esercizi 1. Verificare con gli alberi di refutazione tutte le leggi logiche finora incontrate. 2. Verificare con gli alberi di refutazione che ∃xP (x)∧∃xQ(x) → ∃x(P (x)∧ Q(x)) e ∀x(P (x) ∨ Q(x)) → ∀x(P (x) ∨ ∀xQ(x)) non sono logicamente veri. 3. Trovare con gli alberi di refutazione un controesempio a ∀xP (x) → ∀xQ(x) |= ∀x(P (x) → Q(x)). 14.2 Applicazione ai sillogismi Gli enunciati che contengono solo predicati monadici e non contengono simboli funzionali formano un linguaggio monadico. Rientrano in questa categoria le proposizioni categoriche che intervengono nei sillogismi, ma anche molti altri enunciati più complicati. Si può dimostrare facilmente che l’albero con un enunciato monadico nella radice termina sempre in un numero finito di passi. Gli alberi di refutazione costituiscono perciò un metodo effettivo per de- !!! cidere se un enunciato monadico è logicamente vero o no. Quindi la logica dei linguaggi monadici è decidibile, come quella proposizionale. In particolare gli alberi permettono di decidere se un sillogismo è valido o no. Che un albero con un enunciato monadico nella radice termini sempre lo si può vedere nel seguente modo. Innanzi tutto bisogna preparare l’enunciato, se non è ancora nella forma voluta, in modo che non presenti quantificatori incapsulati, o nidificati, cioè nessun quantificatore cada dentro al raggio 178 d’azione di un altro. Questa trasformazione è possibile applicando le leggi logiche sui quantificatori. Ad esempio ∀x∃y(P (x) ∨ ∃zQ(z) → Q(y)) diventa ∀x(P (x) ∨ ∃zQ(z) → ∃yQ(y)) quindi ∃x(P (x) ∨ ∃zQ(z)) → ∃yQ(y) e ∃xP (x) ∨ ∃zQ(z) → ∃yQ(y). Un esempio più difficile2 è il seguente ∀x∃y(P (x) ∨ ∀zQ(z) → P (x) ∨ Q(y)) che diventa ∀x(P (x) ∨ ∀zQ(z) → ∃y(P (x) ∨ Q(y))) ∀x(P (x) ∨ ∀zQ(z) → P (x) ∨ ∃yQ(y)) ∀x(¬(P (x) ∨ ∀zQ(z)) ∨ P (x) ∨ ∃yQ(y)) ∀x((¬P (x) ∧ ¬∀zQ(z)) ∨ P (x) ∨ ∃yQ(y)) ∀x(((¬P (x) ∨ P (x)) ∧ (¬∀zQ(z) ∨ P (x))) ∨ ∃yQ(y)) ∀x((¬∀zQ(z) ∨ P (x)) ∨ ∃yQ(y)) (∀x(¬∀zQ(z) ∨ P (x))) ∨ ∃yQ(y) (¬∀zQ(z) ∨ ∀xP (x)) ∨ ∃yQ(y) ¬∀zQ(z) ∨ ∀xP (x) ∨ ∃yQ(y). Eseguita la trasformazione si adotta la seguente euristica di sviluppo !!! dell’albero. Se alcuni enunciati inseriti nell’albero hanno un connettivo come segno logico principale, si applicano ad essi e ai loro eventuali risultati le 2 Non vogliamo nascondere che il risultato non è banale; per la dimostrazione occorre sfruttare, come s’intravvede dall’esempio, le forme normali disgiuntive e congiuntive della matrice, dopo aver messo l’enunciato in forma prenessa. 179 regole proposizionali relative, finché si perviene alla situazione in cui tutti gli enunciati non ancora considerati, se non sono atomici o negazioni di atomici, iniziano con un quantificatore o con la negazione di un quantificatore. A questo punto si lavora prima sugli enunciati che iniziano con un ∃ o un ¬∀, il cui effetto è quello di introdurre nuove costanti - e sono i soli che introducono nuove costanti. Essi danno origine a enunciati privi di quantificatori, per l’assenza di quantificatori incapsulati. Ora si applicano le regole agli enunciati che iniziano con ∀ o ¬∃, eseguendo tutte le sostituzioni possibili delle costanti, che danno di nuovo origine a enunciati privi di quantificatori. Tali enunciati non devono essere riscritti, perché il seguito del lavoro non costringerà più a tornare su di essi; non si generano più altri enunciati che iniziano con ∃ o ¬∀. Ai nuovi enunciati privi di quantificatori si applicano eventualmente le regole proposizionali del caso, ma l’applicazione di regole proposizionali dopo un numero finito di passi termina. Esempi Il sillogismo ∀x(S(x) → M (x)) ∃x(M (x) ∧ P (x)) ∃x(S(x) ∧ P (x)) equivalente all’affermazione che ∀x(S(x) → M (x)) ∧ ∃x(M (x) ∧ P (x)) |= ∃x(S(x) ∧ P (x)) è controllato per mezzo del seguente albero: ∀x(S(x) → M (x))3 ↓ ∃x(M (x) ∧ P (x))1 ↓ ¬∃x(S(x) ∧ P (x))4 ↓ M (c) ∧ P (c)2 ↓ M (c) ↓ 180 P (c) ↓ S(c) → M (c)5 ↓ ¬(S(c) ∧ P (c))6 .& ¬S(c) M (c) .& .& ¬S(c) ¬P (c) ¬S(c) ¬P (c) chiuso chiuso Due rami sono chiusi; gli altri due danno le stesse informazioni, in quanto contengono entrambi M (c), P (c), ¬S(c). Il controesempio fornito da questo albero è U = {c} con M = {c}, P = {c} e S = ∅. Questa non è l’interpretazione proposta a suo tempo come controesempio, che era stata U = {a, b, c}, S = {a}, M = {a, c}, P = {b, c}, ma ques’ultima si ottiene dalla presente aggiungendo a e b all’universo; l’interpretazione fornita dall’albero è minimale, e lo è sempre3 . È raro che si trovi un solo modello di un enunciato, in realtà non ce ne è mai uno solo, ma la dimostrazione è complicata4 . Il sillogismo: ∀x(M (x) → S(x)) ∃x(M (x) ∧ P (x)) ∃x(S(x) ∧ P (x)) è valido. L’albero: ∀x(M (x) → S(x))2 ↓ ∃x(M (x) ∧ P (x))1 3 Si potrebbe dire che è minima, a meno di biiezioni che rispettano i predicati in gioco, e si chiamano “isomorfismi”. 4 Viene in mente ∀x(c = x), che sembrerebbe avere solo un tipo di modello, con un solo elemento, ma non è cosı̀ perché l’interpretazione di = potrebbe essere solo una relazione di equivalenza. 181 ↓ ¬∃x(S(x) ∧ P (x))3 ↓ M (c) ∧ P (c) ↓ M (c) ↓ P (c) ↓ M (c) → S(c)4 ↓ ¬(S(c) ∧ P (c))5 .& ¬M (c) S(c) chiuso .& ¬S(c) ¬P (c) chiuso è chiuso. 182 chiuso 15 Il principio di induzione Come si fa a dimostrare che un enunciato universale1 ∀xA(x) vale in un universo infinito? Non si possono certo passare in rassegna tutti gli elementi dell’universo. Alcune regole logiche sembrano utilizzabili, in particolare la riduzione all’assurdo o quelle che permettono di derivare enunciati universali da altri, già però noti, come la distributività di ∀ su →: ∀x(B(x) → A(x)) ∀xA(x). ∀xB(x) Con le sole regole logiche si dimostrano solo enunciati veri in tutte le interpretazioni, non in una particolare. Un insieme infinito peraltro non può essere dato se non attraverso una definizione, che ne mette in evidenza alcune proprietà caratteristiche. Queste sono assunte in genere come assiomi della struttura, e a partire da essi si deducono altre proprietà vere nella struttura stessa (e in tutte le eventuali altre che soddisfano gli assiomi). !!! Le strutture numeriche classiche, che sono insiemi infiniti, hanno poi ciascuna qualche caratteristica particolare che permette di svolgere ragionamenti tipici ed esclusivi2 , ad esempio la continuità per i numeri reali. La più semplice struttura numerica è quella dei numeri naturali N. 15.1 I numeri naturali I numeri naturali3 0, 1, 2, . . . , n, n0 , . . . sono descrivibili in modo compatto e uniforme come se fossero tutti generati da un primo che è lo 0. Non è raccomandabile usare all’inizio le cifre 1, . . . , 9 perché esse presuppongono la rappresentazione in una base, che è argomento di là da venire. Meglio scrivere: 1 Diciamo brevemente cosı̀ per un enunciato che inizia con un quantificatore universale, anche se non è corretto; gli enunciati universali sono quelli che in forma prenessa hanno solo quantificatori universali nel prefisso. 2 E questo vale anche per strutture finite, per cui sono pure disponibili tecniche particolari. Si veda ad esempio 15.7. 3 Consideriamo anche 0 tra i numeri naturali, anche se non è molto naturale rispetto alla prima funzione dei numeri, quella di contare; talvolta i numeri naturali senza lo 0 sono anche detti numeri di conto. 183 0, 00 , 000 , . . . , n, n0 , . . . che rappresenta visivamente il fatto che ogni numero4 n, salvo lo 0, ha un successore indicato con n0 , e iterando il successore non si ottiene mai un numero già considerato, perché i successori di due numeri diversi sono diversi. Queste proprietà sono esprimibili con enunciati predicativi: ∀x∃y(y = x0 ) ∀x(0 6= x0 ) ∀x∀y(x 6= y → x0 6= y 0 ) che costituiscono i primi assiomi dei numeri naturali. Si è abituati a dire che ogni numero si ottiene dal precedente con “+ 1”, ma l’operazione di addizione compare, è definita, solo nella più ricca struttura che si ottiene sulla base della definizione fondamentale. Quando si parte da zero5 per introdurre N, si vuol dire innanzi tutto che N è un insieme infinito; la definizione è la seguente: un insieme X è infinito se esiste una iniezione di X su un sottoinsieme proprio di se stesso. I tre assiomi sopra presentati esprimono questo fatto, con la funzione iniettiva (terzo assioma) “successore” che manda tutto l’insieme N (primo assioma) nel suo sottoinsieme proprio N \ {0} (secondo assioma)6 . Ora però N non è solo un insieme infinito: ogni suo elemento si ottiene da 0 iterando un numero finito di volte l’operazione di successore. Non ci sono altri elementi al di fuori di questa catena senza fine. La condizione non sembra facile da esprimere, perché per parlare di iterare un numero finito di volte il successore parrebbe necessario avere già la nozione di numero naturale. Tuttavia soccorre questa idea, derivata dalla precedente intuizione, che se una proprietà, espressa da una formula A(x), è tale che si trasporta nel passaggio da n a n0 , o che è invariante, cioè è tale che se vale per un generico n allora vale per n0 , in simboli A(n) → A(n0 ), allora come ogni numero si ottiene da 0 passando attraverso una catena di successori, cosı̀ se A vale per 0 allora A vale per tutti i numeri. 4 Il fatto che n nella successione venga dopo i puntini, non significa che è un numero grande; n è una variabile che indica un numero qualunque, e può assumere anche i valori 0, 1, . . . 5 In tutti i sensi. 6 Dopo si vede che è sopra: ∀x(x 6= 0 → ∃y(x = y 0 )). 184 Un’immagine comoda per rappresentarsi la situazione è quella di una successione di pezzi di domino messi in piedi in equilibrio precario, distanti tra loro meno della loro altezza. Cosı̀ se un pezzo cade verso destra fa cadere verso destra quello adiacente. Se cade il primo, fa cadere il secondo, che fa cadere il terzo, e tutti cadono. -¥¥ ¥¥ ¥¥ ¥¥ ¥¥ ¥¥ In alternativa, si può esprimere in termini insiemistici l’idea che N deve essere il più piccolo insieme infinito con l’affermazione 0 ∈ X ∧ ∀x(x ∈ X → x0 ∈ X) → N ⊆ X, che N è il più piccolo insieme che contiene 0 ed è chiuso rispetto al successore7 . Da questa condizione, sostituendo a X l’insieme di verità di una formula A(x), o dalle precedenti considerazioni intuitive, si ricava l’assioma di induzione A(0) ∧ ∀x(A(x) → A(x0 )) → ∀xA(x), dove A è una formula qualsiasi del linguaggio aritmetico, che all’inizio contiene solo 0 e 0 , oltre a =. Non sviluppiamo la costruzione sistematica dell’aritmetica a partire da questi assiomi, che tuttavia sono sufficienti, perché tale trattazione non fa parte del programma. Nel seguito ci limiteremo a familiarizzarci con le conseguenze dell’assioma di induzione in una varietà di esempi, e per far questo daremo per note alcune proprietà aritmetiche, algebriche e geometriche elementari. In particolare useremo il fatto che dalla definizione dell’addizione (che daremo in seguito) segue che n0 = n + 1 e adotteremo questa notazione per il successore. 7 N è contenuto in ogni insieme che sia infinito grazie alla stessa iniezione “successore” e con lo stesso elemento non appartenente all’immagine dell’iniezione 185 Supporremo anche definita8 la relazione d’ordine totale ≤ con minimo 0. 15.2 Il principio di induzione Dall’assioma di induzione segue una regola dimostrativa che si chiama propriamente principio di induzione e che si può schematizzare nel seguente modo: A(0) ∀x(A(x) → A(x + 1)) ∀xA(x). Base P asso induttivo Per dimostrare ∀xA(x) sono sufficienti due mosse: la prima consiste nel dimostrare A(0), e la seconda nel dimostrare ∀x(A(x) → A(x + 1)). Si dice allora che ∀xA(x) è stata dimostrata per induzione su x, e A(x) si chiama la formula d’induzione. La base non si riferisce necessariamente solo a 0. Se a cadere verso destra non è il primo domino, ma il sesto @ @ R¥¥ @ ¥¥ ¥¥ ¥¥ ¥¥ ¥¥ a cadere saranno tutti i domino dal sesto in poi. In corrispondenza a questa idea si ha una formulazione più generale del principio di induzione: A(k) ∀x ≥ k (A(x) → A(x + 1)) ∀x ≥ kA(x). 8 Base P asso induttivo Per mezzo dell’addizione la definizione sarà: x ≤ y ↔ ∃z(x + z = y). Per ora la possiamo pensare postulata, per poter fare esercizi con formule familiari e per scrivere alcune formule in modo più comodo. 186 Se si deve dimostrare ad esempio ∀x > 0 A(x) si dimostra come base A(1)). La dimostrazione del passo induttivo è la parte più importante e delicata; la base di solito si riduce a calcoli di verifica. Trattandosi di un enunciato universale, la dimostrazione di solito si imposta come dimostrazione di A(x) → A(x + 1) per un x generico. Si assume quindi A(x), chiamandola ipotesi induttiva e si cerca di dedurre A(x + 1): A(x) .. . Ipotesi induttiva A(x + 1). Come abbiamo osservato in precedenza, se si riesce a dedurre A(x + 1) dall’assunzione A(x) si stabilisce A(x) → A(x + 1) senza alcuna assunzione particolare, a parte gli assiomi che sono enunciati, e quindi si può quantificare universalmente ∀x(A(x) → A(x + 1)). Una volta dimostrato il passo induttivo - e la base - la conclusione ∀xA(x) segue come bonus. Errori umoristici non infrequenti: da A(x), per sostituzione, A(x + 1) oppure da A(x), direttamente per generalizzazione ∀xA(x). Qualcuno giustifica questi errori alludendo a difficoltà immaginarie dovute a una pericolosa somiglianza tra quello che si deve dimostrare e quello che si assume. Ma nella dimostrazione del passo induttivo la tesi ∀xA(x) non interviene per nulla. Quello che si assume nel passo induttivo, A(x), è che A valga per un elemento, ancorché non precisato; quello che si vuole dimostrare in grande è ∀xA(x), cioè che A vale per tutti gli elementi; in piccolo, nel passo induttivo, si vuole solo dimostrare che A vale per un altro elemento, una bella differenza, anche sintatticamente visibile, se si usassero i quantificatori. Se ci sono difficoltà ad ogni modo, sono le difficoltà tipiche della manipolazione di variabili e quantificatori. 187 !!! Esempio Dimostrare per induzione9 che 1 + 2 + ... + n = n(n+1) . 2 S’intende, poiché l’espressione di sinistra ha senso solo per n ≥ 1, che si deve dimostrare ∀x ≥ 1 (1 + 2 + ... + x = x(x+1) ), ma useremo la variabile n come 2 d’uso10 . Chiamiamo P (n) la formula di induzione11 . La dimostrazione per induzione della formula si svolge nel seguente modo: Base: per n = 1, P (1) è 1 = 1(1+1) , e l’espressione di destra si riduce a 1, 2 quindi P (1) è dimostrata; Passo induttivo: ammesso 1 + 2 + ... + n = n(n+1) , 2 cioè P (n), aggiungendo n + 1 ad ambo i membri si ha 1 + 2 + ... + n + (n + 1) = n(n+1) 2 + (n + 1) = n(n+1)+2(n+1) 2 = (n+1)(n+2) 2 che è P (n + 1). 2 Sono possibili diversi sviluppi del passo induttivo, in avanti o all’indietro; in avanti si procede come nell’esempio, si scrive l’ipotesi induttiva P (n) e poi la si manipola cercando di arrivare a P (n + 1). Nel procedimento all’indietro si può partire da quello che si deve dimostrare, P (n + 1): 9 Uno dei primi algoritmmi che si chiede di scrivere (Horstmann, p. 45) e quello per la somma 1 + 2 + . . . + n. 10 L’uso di n come variabile libera universale per i numeri naturali è tipica della scrittura matematica; se si usano i quantificatori introducendo la notazione logica è meglio tornare alla x. Il passo induttivo può comunque essere sempre presentato come dimostrazione di A(n) → A(n + 1). 11 Usiamo P perché è una formula atomica. 188 1 + 2 + . . . + n + (n + 1) = (n+1)(n+2) , 2 riscrivere questa somma come (1 + 2 + . . . + n) + (n + 1) = (n+1)(n+2) , 2 facendo emergere un’espressione 1 + 2 + . . . + n che è parte di P (n), di cui in particolare P (n) afferma l’uguaglianza con altra espressione; si osserva quindi che “per ipotesi induttiva”, cioè facendo giocare a questo punto un ruolo a P (n), essa si può sostituire secondo quanto detta P (n) ottenendo n(n+1) 2 + (n + 1) = (n+1)(n+2) ; 2 si verifica quindi che quest’ultima uguaglianza è valida, perché diventa (n+1)(n+2) 2 = (n+1)(n+2) 2 e quindi P (n + 1) è dimostrato. 2 Avvertenza P (n + 1) è dimostrato dai passaggi di sopra non perché da !!! esso segua un’identità; lo studente di logica sa che dal fatto che A → B sia vero e B sia vero non segue la verità di A. In realtà i passaggi di sopra vanno letti all’indietro partendo dall’ultima uguaglianza, e tutte le uguaglianze scritte sono tra loro equivalenti (se si assume P (n)). P (n + 1) è conseguenza di P (n) e di n(n+1) + (n + 1) = 2 (n+1)(n+2) , che è un’identità aritmetica. 2 In questa impostazione, ci sono due movimenti logici all’indietro: innanzi tutto si parte dalla tesi da dimostrare P (n + 1), quindi si sviluppa una serie di uguaglianze, che tuttavia, essendo collegate da equivalenza, vanno lette nell’ordine inverso, dall’ultima identità fino a P (n + 1). Se si a disagio, in alternativa si può partire, sempre in un’impostazione parzialmente all’indietro, non da P (n + 1) ma dall’espressione 1 + 2 + ... + n + (n + 1) = ?, di cui si vuole trovare il valore che confermi P (n + 1). Un primo passo è quello di riempire l’ignoto “?” con qualcosa di noto, ad esempio 1 + 2 + ... + n + (n + 1) = (1 + 2 + ... + n) + (n + 1), 189 valida per la proprietà associativa, quindi si osserva che “per ipotesi induttiva” 1 + 2 + ... + n + (n + 1) = n(n+1) 2 + (n + 1), e con i soliti calcoli si arriva a 1 + 2 + ... + n + (n + 1) = (n+1)(n+2) . 2 La formula P (n + 1) è stata cosı̀ dimostrata ma assumendo a un certo punto P (n), quindi si è stabilito P (n) → P (n + 1). 2 Nella dimostrazione del passo induttivo possono intervenire tutte le strategie dimostrative. Illustriamo un problema in cui interviene la distinzione dei casi. Esempio Dimostrare che 1 − 21 + 13 + . . . + (−1)n−1 n1 è sempre strettamente positivo. S’intende che si deve dimostrare che per ogni n ≥ 1 1 − 21 + 13 + . . . + (−1)n−1 n1 > 0. Dimostrazione Base: Per n = 1 la somma è 1 e 1 > 0. Passo induttivo: Consideriamo 1 1 − 12 + 13 + . . . + (−1)n n+1 e distinguiamo due casi. Se n + 1 è dispari, allora la somma fino a n + 1, riscritta come (1 − 12 + 13 + . . . − n1 ) + 1 n+1 1 , una quantità positiva. si ottiene da quella fino a n sommando n+1 1 1 Siccome per ipotesi induttiva anche (1 − 2 + 3 + . . . − n1 ) > 0, si ha la conclusione voluta. Se n + 1 è pari, la somma 190 1 − 12 + 13 + . . . + 1 n − 1 n+1 si può riscrivere (1 − 12 ) + ( 13 − 14 ) + . . . + ( n1 − 1 ) n+1 per la proprietà associativa, e quindi osservare che è la somma di quantità tutte positive. 2 Si noti che l’ipotesi induttiva interviene solo in uno dei due casi in cui è distinta la dimostrazione del passo induttivo, ma comunque interviene. Se si fosse voluto dimostrare che 1 − 21 + 13 + . . . + (−1)i−1 1i + . . . − 1 2n >0 non ci sarebbe stato bisogno dell’induzione e si sarebbe potuto procedere come nel precedente caso pari con la sola proprietà associativa. In verità anche questa proprietà dipende dall’induzione, perché in una trattazione sistematica l’associatività della somma, come anche il fatto che la somma di un numero finito di addendi positivi è positiva, si dimostrano a loro volta per induzione, e lo vedremo più avanti quando discuteremo della somma generalizzata. Tutti i risultati aritmetici dipendono dall’induzione, perchè questo è il solo assioma dell’aritmetica, a parte quelli riguardanti 0 e successore. Tuttavia c’èun uso prossimo e uno remoto dell’induzione; se si conoscono dei risultati (comunque a loro volta siano stati dimostrati) e li si usa in modo diretto in una dimostrazione, questa per parte sua non è una dimostrazione per induzione. Esistono casi in cui invece si ha una scelta tra due metodi dimostrativi, uno per induzione e uno no. Ad esempio si può dimostrare per induzione che n3 − n è multiplo di 3: partendo da (n + 1)3 − (n + 1) (n + 1)3 − (n + 1) = n3 + 3n2 + 3n + 1 − n − 1 = (n3 − n) + 3n2 + 3n che è divisibile per 3 in quanto somma di addendi tutti divisibili per 3 (il primo per ipotesi induttiva). 2 Ma si può anche fattorizzare n3 − n in (n − 1)n(n + 1) e osservare che uno dei tre consecutivi deve essere divisibile per 3. 2 191 Di solito quando sono disponibili due vie, una per induzione e una che potremmo chiamare algebrica, la seconda dà maggiori informazioni, in quanto lega il problema dato con altri. Nell’ultimo esempio abbiamo commesso un errore nell’esposizione della dimostrazione per induzione, un errore che lo studente non deve commettere, !!! quello di aver trascurato di dimostrare la base. La leggerezza in questo caso è innocua, perché subito rimediabile: per n = 0 n3 − n vale 0 che è divisibile per 3. Ma in altri casi può essere fatale. Si consideri ad esempio la seguente dimostrazione sul valore della somma dei primi n pari: 2 + 4 + + 2n = n(n + 1) + 5. Se indichiamo la somma con Sn = 2 + 4 + + 2n, è facile verificare che Sn = n(n + 1) + 5 → Sn+1 = (n + 1)(n + 2) + 5 ma la formula è falsa. Lo si vede subito per n = 0 ed n = 1. Si potrebbe pensare che valga solo da un certo punto in poi, e si può provare con altri valori, ma sempre con esito negativo. Viene il dubbio che sia sempre falsa, e cosı̀ è, ma questa affermazione richiede a sua volta una dimostrazione (trattandosi di un’affermazione universale infinita: sempre, per ogni n, Sn 6= . . . )12 . Una facile dimostrazione si trova se viene in mente di osservare che n(n + 1) + 5 è sempre dispari, come somma di un pari e di un dispari, mentre la somma di pari è pari (ma le stesse considerazioni si potrebbero fare con n(n + 1) + k, k > 0 qualunque). 15.3 L’induzione empirica Come non si deve trascurare la base, cosı̀ non si deve trascurare il passo induttivo. Se non si dimostra il passo induttivo, non c’è traccia di dimostrazione per un’asserzione del tipo ∀xA(x). Al massimo si possono verificare alcuni casi particolari iniziali, per numeri piccoli. Questa verifica è talvolta detta induzione empirica. 12 E quindi si può dimostrare per induzione (esercizio). 192 Con “induzione empirica” si intende il passaggio da un numero finito, limitato, di osservazioni, alla formulazione di una legge generale; dal fatto che tutti i cigni osservati sono bianchi alla affermazione che tutti i cigni sono bianchi. L’esempio, classico nei testi di filosofia della scienza, è stupido, ma è difficile trovarne di scientifici, nonostante si pensi che l’induzione caratterizzi le scienze empiriche, perché forme di induzione di questo genere sono in verità del tutto estranee alla ricerca scientifica. La parola è usata comunque in contrasto con “deduzione”, a indicare un passaggio dal particolare all’universale (come se la deduzione fosse, cosa che non è, se non raramente, un passaggio dall’universale al particolare13 ). L’induzione empirica è anche detta induzione per enumerazione, dizione che suggeriamo di evitare perché non faccia venire in mente i numeri. Quando all’inizio dell’età moderna si ebbe una ripresa della ricerca matematica, la parola “induzione” era usata nella scienza per indicare la formulazione di leggi generali suggerite e verificate da un certo numero di casi particolari. Anche i matematici, figli del loro tempo, usavano la parola in questo modo e per essere scienziati pretendevano di usare anch’essi l’induzione. Lo si riscontra soprattutto in quegli autori, come Eulero, che basavano le loro congetture su molti calcoli ed esplorazioni delle proprietà dei numeri. Il primo autore che formulò e propose il principio d’induzione matematica nella forma moderna fu Pascal, ed egli volle chiamare cosı̀ questo principio, che implicitamente era stato usato già da Euclide e da Fermat in altra versione14 , considerandolo la vera forma d’induzione adatta a, o tipica della matematica . In verità non v’è alcun rapporto; è vero che con l’induzione matematica si arriva a una conclusione valida per l’infinità dei numeri con due soli passaggi, ma si tratta di due dimostrazioni, non di due osservazioni. L’esplorazione di un piccolo numero di casi non è mai sufficiente a dimostrare ∀xA(x); al massimo può servire a trovare un controesempio, se si è fortunati. L’induzione empirica addirittura può essere ingannevole quando sono tanti i casi confermati; “tanti” è sempre relativo; ad esempio il polinomio f (n) = n2 + n + 41 è tale che f (n) è un numero primo per n = 0, 1, 2, . . . , 39 (verificare qualche caso). La congettura che si potrebbe indurre che f (n) sia sempre primo è tuttavia smentita dal controesempio f (40) = 402 + 40 + 41 = 402 + 80 + 1 = (40 + 1)2 = 412 . 13 14 Lo è solo nelle applicazioni della particolarizzazione universale. Il principio della discesa finita, discusso più avanti. 193 Di fronte alla congettura che f (n) sia sempre primo, naturalmente viene naturale l’idea di controllare gli eventuali zeri e scomporre il polinomio (se si sa che gli zeri permettono una scomposizione). Il tentativo di dimostrare il passo induttivo invece fallisce per mancanza di idee. L’esplorazione empirica è utile tuttavia e raccomandabile quando non !!! viene proposta una formula da dimostrare, ma la si deve trovare, quando cioè bisogna formulare una congettura - e poi dimostrarla. Ad esempio se si vuole trovare una formula per 1 2 + 1 2·3 + 1 3·4 + ... + 1 , n(n+1) se si calcolano i primi valori dell’espressione n=1 1 2 = 1 2 n=2 1 2 + 1 2·3 = 2 3 n=3 1 2 + 1 2·3 + 1 3·4 = 3 4 n si può arrivare alla congettura che la risposta in generale sia n+1 , quindi provare a dimostrarla (esercizio, e come ulteriore esercizio trovare e dimostrare la formula in modo algebrico senza induzione). Quando come in questo caso si esegue un’induzione empirica, conviene fare attenzione che i calcoli possono dire di più che suggerire solo la congettura, possono anche suggerire la traccia della dimostrazione del passo induttivo. Consideriamo ad esempio come si possa valutare e dimostrare l’espressione per la somma dei primi dispari 1 + 3 + ... + (2n + 1) I primi calcoli mostrano come risultato dei quadrati, n=0 n=1 n=2 n=3 1=1 1+3=4 1+3+5=9 1 + 3 + 5 + 7 = 16 ed è semplice forse il riconoscimento puro e semplice della legge, ma si può fare di meglio: se si riporta nella riga sottostante il valore ottenuto, per la 194 somma dei primi termini, e se si indica sempre l’ultimo addendo con 2i + 1, come suggerisce l’espressione iniziale, si ottiene: n=2 n=3 n=4 1 + (2 · 1 + 1) = 4 22 + (2 · 2 + 1) = 9 32 + (2 · 3 + 1) = (3 + 1)2 . All’inizio si possono avere dubbi: 4 = 22 può essere 4 = 2 · 2, anzi lo è, ovviamente; il problema è quale scrittura sia più suggestiva della direzione giusta da prendere; qui diventa presto trasparente la formula del quadrato (n + 1)2 = n2 + 2n + 1. Un ulteriore passo di conferma dà 42 + (2 · 4 + 1) = (4 + 1)5 n=5 e quello che si intravvede è lo schema del passo induttivo: 1 + 3 + + (2n − 1) + (2n + 1) = n2 + (2n + 1) = (n + 1)2 . L’uso dell’ipotesi induttiva 1 + 3 + . . . + (2n − 1) = n2 per sostituire 1 + 3 + . . . + (2n − 1) con n2 in 1 + 3 + . . . + (2n − 1) + (2n + 1) corrisponde nei calcoli precedenti ai successivi rimpiazzamenti di 1 + 3 con 4 = 22 , di 1 + 3 + 5 con 9 = 32 , di 1 + 3 + 5 + 7 con 16 = 42 . La dimostrazione per induzione non è diversa dai calcoli che hanno fatto intravvedere la risposta; sono gli stessi calcoli che si ripetono (non i risultati parziali, o non solo quelli), e che passando alle variabili si trasformano nel passo induttivo. Per riuscire a vedere lo schema bisogna che si facciano sı̀ i calcoli con i numeri piccoli, ma non guardando solo al risultato, bensı̀ allo spiegamento delle operazioni aritmetiche implicate; si ottiene il tal modo il collegamento o il passaggio dall’aritmetica all’algebra; l’algebra, rispetto all’aritmetica, non è altro che questa attenzione non al risultato numerico - che non può esserci, in presenza delle variabili - ma alla struttura e all’organizzazione delle operazioni da eseguire, e il loro trasporto alle variabili. L’importante è lasciare indicate sempre le espressioni dei calcoli eseguiti. 15.4 Il ragionamento induttivo L’induzione non è solo una tecnica di dimostrazione, ma una tecnica di ragionamento, che porta a trovare il risultato. Bisogna imparare a ragionare !!! 195 per induzione. Il ragionamento induttivo è il ragionamento che costruisce una situazione dinamica: s’immagina un insieme di n elementi e ci si chiede: cosa succede se se ne aggiunge un altro? Consideriamo l’esempio del numero di sottoinsiemi di un insieme; se U ha 0 elementi, U = ∅, l’unico sottoinsieme di U è U , che quindi ha un sottoinsieme; se U = {a} ha un elemento, i suoi sottoinsiemi sono ∅ e {a} = U ; se U = {a, b} ha due elementi, i suoi sottoinsiemi sono ∅, {a}, {b}, {a, b}. I conti empirici sono abbastanza complicati, da 2 in avanti; per essere sicuri di avere elencato tutti i sottoinsiemi, occorre in pratica fare il ragionamento che presentiamo sotto, e che consiste nel considerare il passaggio da un insieme con n elementi ad uno con n + 1; il ragionamento si può e si deve fare prima di avere la risposta; questa può essere lasciata indicata, come incognita funzionale, con la scrittura f (n) per il numero di sottoinsiemi di un insieme con n elementi. Il ragionamento necessario è il seguente: supponiamo che un insieme con n elementi abbia f (n) sottoinsiemi; se a un insieme U di n elementi si aggiunge un a 6∈ U , tra i sottoinsiemi di U ∪ {a} ci sono quelli che non contengono a, che sono quindi tutti i sottoinsiemi di U , e quelli che contengono a. Questi tuttavia si ottengono tutti da sottoinsiemi di U aggiungendo a a ciascuno di essi; o detto in altro modo, se a ciascuno di questi si sottrae a si ottengono tutti i sottoinsiemi di U . Quindi anche i sottoinsiemi di U ∪ {a} del secondo tipo sono tanti quanti i sottoinsiemi di U . In formule l’insieme dei sottoinsiemi di U ∪ {a} è dato da {X | X ⊆ U } ∪ {X ∪ {a} | X ⊆ U }, e la cardinalità di questo insieme è f (n) + f (n). Ne segue ovviamente che f (n + 1) = 2f (n). Una funzione definita in questo modo, per cui il suo valore per un numero qualsiasi si ottiene eseguendo operazioni note sul valore della funzione per il numero precedente, si dice che è definita ricorsivamente. Funzioni di questo genere si ottengono di solito quando si esegue un ragionemento induttivo. L’argomento delle funzioni definite ricorsivamente sarà affrontato tra breve. In alcuni casi casi, come l’attuale, da equazioni ricorsive come quella di sopra, che definiscono implicitamente una funzione, si ricava un’espressione esplicita. 196 Il ragionamento è di nuovo induttivo; tenendo conto anche della condizione di base, f (0) = 1, si ricavano i seguenti valori n=0 n=1 n=2 n=3 n=4 f (0) = 1 f (1) = 2 f (2) = 2 · f (1) = 2 · 2 f (3) = 2 · f (2) = 2 · 2 · 2 = 23 f (4) = 2 · f (3) = 2 · 23 = 24 e quindi si può non solo congetturare la risposta f (n) = 2n ma dimostrarla, con il passo induttivo f (n + 1) = 2f (n) = 2 · 2n = 2n+1 . In alcuni casi di definizioni ricorsive l’espressione esplicita si ricava con particolari manipolazioni algebriche. Ad esempio, se si vuole valutare la somma della progressione geometrica di ragione 2: 1 + 2 + 22 + 23 + ... + 2n = f (n) si può osservare che 1 + 2 + 22 + 23 + ... + 2n = 1 + 2(1 + 2 + 22 + 23 + . . . + 2n−1 ) trovando la relazione ricorsiva f (n) = 1 + 2f (n − 1); ma se il primo membro si scrive f (n − 1) + 2n si ha f (n − 1) + 2n = 1 + 2f (n − 1) e quindi f (n − 1) = 2n − 1, da cui 1 + 2 + 22 + 23 + ... + 2n = 2n+1 − 1, caso particolare della somma della progressione geometrica di ragione r 1 + r + r2 + . . . + rn = 197 rn+1 −1 . r−1 15.5 Esercizi Sono diversi i campi in cui l’induzione si rivela utile. Il più ricco di applicazioni naturalmente è quello della Aritmetica Si dimostri per induzione, e anche in altro modo se possibile: 1. 1 2 + 1 2·3 + 1 3·4 + ... + 1 n(n+1) 2. 1 + 4 + 9 + . . . + n2 = = n n+1 n(n+1)(2n+1) 6 3. 2 + 4 + . . . + 2n = ? 4. 2 + 6 + 12 + . . . + (n2 − n) = n3 −n 3 5. 2 + 2 · 3 + 3 · 4 + . . . + n(n + 1) = n(n+1)(n+2) 3 6. n3 + 3n2 + 2n è divisibile per 6 7. n5 + 4n + 10 è divisibile per 5 8. n ≥ 3 → (n + 1)2 < 2n2 9. n > 0 → 2n | (n + 1)(n + 2) · · · (2n) 10. 1 + r + r2 + . . . + rn = rn+1 −1 . r−1 m z}|{ 00 0 11. Calcolare il posto del termine tn . . . nell’enumerazione dei termini vista nell’esempio del paragrafo 10.2 Problemi divertenti: 12. Ammettiamo di avere francobolli da 3 e da 5 centesimi. Far vedere che qualsiasi tassa postale maggiore di 7 può essere pagata con bolli da 3 e 5. Suggerimento: prima si suppone che per n si sia usato almeno un bollo da 5; poi, se si sono usati solo bolli da 3, si osserva che n deve essere almeno 9. Alternativa: distinguere i tre casi: n = 3k, n = 3k + 1, n = 3k + 2. 198 13. Lo stesso con bolli da 2 e 3, tutti gli n maggiori di 1, bolli da 3 e 7, tutti quelli maggiori di 11, bolli da 2 e da 2k + 1, tutti quelli maggiori di 2k − 1. Esercizi di geometria: 14. Quante rette passano per n punti (di cui mai tre allineati)? Suggerimento: impostare un ragionamento induttivo “se si aggiunge un punto . . . ”. 15. Quante sono le diagonali di un poligono convesso di n lati? 16. Quante diagonali non intersecantesi occorrono per dividere un poligono convesso di n lati in triangoli disgiunti? 17. La somma degli angoli interni di un poligono convesso con n lati è π(n − 2). Argomenti di analisi: 18. Se n intervalli su una retta sono a due a due non disgiunti, la loro intersezione non è vuota. Suggerimento: anche se la base è n = 2, nella dimostrazione del passo induttivo occorre (almeno nell’impostazione in mente a chi scrive) utilizzare il caso n = 3, che va dimostrato a parte, sfruttando proprietà di connessione degli intervalli (se due punti appartengono a un intervallo, tutti i punti intermedi anche vi appartengono). Combinatoria: 19. Quante sono le funzioni da un insieme con n elementi in un insieme con m elementi? Suggerimento. Per induzione su n, con un ragionamento induttivo. Supposto di conoscere quante sono le funzioni da un insieme X con n elementi in un insieme Y con m elementi, si aggiunga a X un elemento a 6∈ X. Le funzioni di dominio X ∪ {a} si ottengono da quelle di dominio X aggiungendo una coppia ha, yi con y ∈ Y . 199 20. Quanti sono i sottoinsiemi di un insieme con n elementi? 21. Quante sono le relazioni tra un insieme con m elementi e un insieme con n elementi? 22. Quante sono le permutazioni di un insieme con n elementi? 23. In una festa, le buone maniere richiedono che ogni persona saluti con un “Buona sera” ogni altra persona, una sola volta; se ci sono n persone, quanti “Buona sera” sono pronunciati? E se ci si dà la mano, quante strette di mano occorrono? 24. Con quale degli esercizi precedenti si già risolto il problema 20? Facciamo osservare che molti problemi in cui il passo induttivo, se s’imposta un ragionamento per induzione, consiste in un +n, come alcuni di quelli di sopra, si possono risolvere anche direttamente con un conto del numero di eventi rilevanti, che porta non a caso a risultati in forma di prodotto; è un’applicazione del cosiddetto principio fondamentale del conteggio che vedremo più avanti. Teoria degli algoritmi: 25. La Torre di Hanoi. Ci sono tre aste verticali; all’inizio su di una sono infilzati n dischi con un buco in mezzo, di raggio decrescente dal basso verso l’alto. Bisogna spostare la pila in un’altra asta, muovendo un disco alla volta da una pila e infilzandolo in un’altra, servendosi anche della terza asta come passaggio. La condizione è che in nessun momento su nessuna pila ci sia un disco al di sotto del quale ce ne è uno di raggio minore. Dimostrare che lo spostamento è possibile, per induzione su n, risolvendo prima n = 3, e calcolare quante mosse (ogni mossa è lo spostamento di un disco) sono necessarie. 200 Fondamenti: 26. Dimostrare che la funzione successore N −→ N \ {0} è suriettiva, o sopra N \ {0}. Osservazione. Questo equivale a dimostrare che ∀x(x = 0∨∃y(x = y 0 )). 15.6 Definizioni ricorsive Supponiamo di conoscere due funzioni numeriche15 e consideriamo la seguente coppia di equazioni: ½ f (x1 , 0) = g(x1 ) f (x1 , x0 ) = h(x1 , f (x1 , x)). Per ogni m ed n il valore f (m, n) può essere calcolato in modo effettivo attraverso la seguente successione di valori: f (m, 0) = g(m) f (m, 1) = h(m, f (m, 0)) f (m, 2) = h(m, f (m, 1)) e cosı̀ via fino a f (m, n). Lo abbiamo già visto in un paragrafo precedente a proposito della funzione definita da ½ f (0) = 1 f (n0 ) = 2f (n). Qui abbiamo considerato il caso di una funzione a due argomenti, di cui uno funge da parametro. Più in generale, se sono date due funzioni: g(x1 , . . . , xr ) a r argomenti e h(x1 , . . . , xr , x, y) a r + 2 argomenti16 , dove r può essere 0, la coppia di equazioni ½ f (x1 , . . . , xr , 0) = g(x1 , . . . , xr ) f (x1 , . . . , xr , x0 ) = h(x1 , . . . , xr , x, f (x1 , . . . , xr , x)) 15 Con “funzione numerica” intendiamo ora una funzione f : N −→ N, o f : N × N −→ N, o anche a più argomenti. 16 In verità, per considerare tutti i casi possibili, g ed h non devono avere necessariamente lo stesso numero di parametri, e h può non dipendere da x. 201 definisce ricorsivamente f (x1 , . . . , xr , x) a partire da g e h. Questa forma di ricorsione si chiama propriamente ricorsione primitiva, ma non cosidereremo forme più generali di ricorsione17 . In una ricorsione primitiva, il valore di f ( con valori fissati dei parametri) per ogni numero x0 maggiore di 0 dipende, attraverso operazioni note, dal valore di f per il predecessore x. x si chiama anche variabile di ricorsione. È ovvia la differenza rispetto alle definizioni esplicite; l’equazione di ricorsione f (x1 , . . . , xr , x0 ) = h(x1 , . . . , xr , x, f (x1 , . . . , xr , x)) non è del tipo f (~x) = . . . 18 dove . . . non contiene f , come richiesto dalla definibilità esplicita, al contrario la definizione appare circolare. Un teorema generale, che dipende solo dalla struttura fondamentale di N, cioè dagli assiomi che abbiamo proposto, afferma che questo tipo di definizione individua una e una sola funzione che soddisfa le equazioni di ricorsione per tutti i possibili argomenti. Dal precedente esempio, è chiaro come si possa ottenere ogni valore con un numero finito di passi. L’unicità della funzione si dimostra nel seguente modo. Supponiamo che due funzioni f1 ed f2 soddisfino entrambe le equazioni. Dimostriamo per induzione su x che f1 e f2 hanno sempre lo stesso valore: Base: f1 (x1 , . . . , xr , 0) = g(x1 , . . . , xr ) = f2 (x1 , . . . , xr , 0). Passo induttivo: Se f1 (x1 , . . . , xr , x) = f2 (x1 , . . . , xr , x), allora f1 (x1 , . . . , xr , x0 ) = h((x1 , . . . , xr , x, f1 (x1 , . . . , xr , x)) = h((x1 , . . . , xr , x, f2 (x1 , . . . , xr , x)) = f2 ((x1 , . . . , xr , x0 ).2 Con ovvie modifiche si definiscono ricorsivamente funzioni N \ Nk −→ N con equazioni del tipo ½ f (k) = n0 f (x0 ) = h(x, f (x)) x ≥ k. Con una semplice ricorsione primitiva si definisce l’addizione: 17 18 L’argomento rientra in un’introduzione alla teoria della calcolabilità. ~x sta per una n-upla di elementi, n imprecisato. 202 ½ x+0 = x x + y 0 = (x + y)0 . In queste equazioni + è il nuovo simbolo per la funzione da definire, a due argomenti; x funge da parametro e y da variabile di ricorsione. Le funzioni date sono per la prima equazione la funzione identità x 7→ x e per la seconda la funzione successore. Si vede che, se con 1 si indica 00 , allora x + 1 = x + 00 = (x + 0)0 = x0 . Con l’addizione a disposizione si definisce ricorsivamente la moltiplicazione come una iterazione dell’addizione con le equazioni: ½ x·0 = 0 x · y 0 = x · y + x. In modo analogo si definiscono la potenza, come iterazione del prodotto, e altre operazioni aritmetiche. Ad esempio il fattoriale ½ 0! = 1 x0 ! = x! · x0 . La definizione del prodotto permette di dimostrare che la cardinalità19 c(X × Y ) del prodotto cartesiano di due insiemi X e Y è c(X) · c(Y ): Siano X e Y due insiemi di cardinalità rispettivamente n ed m. Se a Y si aggiunge un elemento a 6∈ Y , allora X × (Y ∪ {a}) = (X × Y ) ∪ {hx, ai | x ∈ X}. Ma ovviamente c({hx, ai | x ∈ X}) = c(X) = n, ed inoltre X × Y e {hx, ai | x ∈ X} sono disgiunti (vedi esercizi), per cui c(X × (Y ∪ {a})) = n · m + n = n · (m + 1). 2 A questo risultato si dà addirittura il nome di Fundamental Counting Principle per la sua untilità in combinatoria, quando si devono contare i casi. Quando una funzione è definita per ricorsione, la dimostrazione delle sue proprietà è svolta nel modo più naturale per induzione. Ad esempio dimostriamo la proprietà associativa dell’addizione: 19 Il numero di elementi. 203 (x + y) + z = x + (y + z), per induzione su z. Base: (x + y) + 0 = x + y = x + (y + 0). Passo induttivo: Se (x + y) + z = (x + (y + z), allora (x + y) + z 0 = ((x + y) + z)0 = (x + (y + z))0 = x + (y + z)0 = x + (y + z 0 ).2 Con la ricorsione non si definiscono solo funzioni numeriche, ma anche funzioni non numeriche che dipendono da un parametro numerico. Ad esempio l’unione e l’intersezione generalizzata di n insiemi A1 , . . . , An si possono definire con S1 i=1 Ai Sn+1 i=1 = A1 Ai = ( Sn i=1 Ai ) ∪ An+1 e rispettivamente T1 i=1 Ai Tn+1 i=1 = A1 Ai = ( Tn i=1 Ai ) ∩ An+1 . Se gli insiemi sono dati come A0 , . . . , An l’unione si definisce come S0 i=0 Ai = A0 Sn+1 i=0 Ai = ( Sn i=0 Ai ) ∪ An+1 e analogamente per l’intersezione. Se invece si vuole definire un’unione generalizzata su infiniti insiemi 204 S N Xi , i∈ o S∞ i=0 Xi , si ricorre come si è visto alla generalizzazione della definizione originaria: S x ∈ i∈N Xi se e solo se esiste un i ∈ N tale che x ∈ Xi . Analogamente per l’intersezione. In modo ricorsivo si definisce anche la somma generalizzata, o sommatoria da 1 a n (per la sommatoria da 0 a n si applicano agli indici le stesse modifiche di sopra per l’unione): P1 i=1 ai Pn+1 i=1 o più in generale Pn i=k = a1 ai = ( Pn i=1 ai ) + an+1 , ai , per n ≥ k ≥ 0, con Pk i=k ai Pn+1 i=k La sommatoria infinita ate in Analisi. = ak ai = ( P∞ i=0 Pn i=k ai ) + an+1 . ai rientra negll’argomento delle serie, studi- Anche le relazioni possono essere definite per ricorsione, sostituendo equivalenze alle uguaglianze, ad esempio ½ x < 0 ↔ x 6= x x < y 0 ↔ x < y ∨ x = y, o con un altro metodo che vedremo in seguito e che utilizza anche nella notazione la definizione di relazione come insieme di coppie ordinate. 205 La ricorsione primitiva può essere combinata con altre forme di definizione, come la definizione per casi, o essere usata per definire simultaneamente due funzioni. Un esempio è la seguente definizione di quoziente e resto per la divisione di m per n, con m ≥ n > 0 (n è fissato, la ricorsione è su m). ½ qm qm+1 = qm + 1 se rm < n − 1 se rm = n − 1 ½ rm + 1 rm+1 = 0 se rm < n − 1 se rm = n − 1 (qm è un’altra notazione per q(m); si dovrebbe scrivere q(m, n) o qm,n , ma non è il caso di appesantire la notazione). Come base della ricorsione si pone, per m = n, qn = 1 e rn = 0. Si dimostra (esercizio) per induzione su m, con base m = n, che m = nqm + rm con 0 ≤ rm < n, ottenendo quindi il teorema fondamentale della divisione ∃q∃r(m = nq + r ∧ 0 ≤ r < n). Alcune forme frequenti di ricorsione non hanno apparentemente il formato della ricorsione primitiva; ad esempio la successione20 dei numeri di Fibonacci è definita in modo che, a parte i primi due, arbitrari, ogni elemento dipende dai due immediati predecessori21 : = 1 a0 a1 = 1 an+2 = an + an+1 . Tali forme di ricorsione sono di fatto riconducibili alla ricorsione primitiva, e le proprietà di una successione come quella di Fibonacci possono essere meglio dimostrate con un’induzione appropriata, come vedremo, oltre che con quella normale. 20 Una successione a0 , a1 , . . . di elementi di un insieme U non è altro che una funzione N −→ U tale che n 7→ an , e si indica {an | n ∈ N} o brevemente {an }. 21 Horstmann, p. 273 e p. 646. 206 15.6.1 Esercizi 1. Dimostrare per induzione che se due insiemi finiti X e Y sono disgiunti, c(X ∪ Y ) = c(X) + c(Y ). Suggerimento: l’induzione è su c(Y ), ma occorre dimostrare a parte il caso in cui c(Y ) = 1, cioè che se a X si aggiunge un elemento a 6∈ X allora c(X ∪ {a}) = c(X) + 1 (e questo è l’unico momento della dimostrazione in cui interviene la condizione che gli insiemi siano disgiunti). La dimostrazione richiede il teorema 15.7.1, ne è un immediato corollario. 2. Dimostrare la proprietà distributiva x·(y+z) = x·y+x·z per induzione su z. 3. Dimostrare per induzione la proprietà associativa della moltiplicazione. 4. Definire ricorsivamente mn e dimostrare mp+q = mp · mq . S 5. Dimostrare per induzione che x ∈ ni=1 Ai se e solo se x appartiene ad almeno uno degli Ai (l’unione generalizzata era stata introdotta proprio con questa definizione, che ora va dimenticata a favore di quella ricorsiva; oppure si veda l’esercizio come una dimostrazione dell’equivalenza delle due definizioni). T 6. Dimostrare per induzione che x ∈ ni=1 Ai se e solo se x appartiene a tutti gli Ai . P P P 7. Dimostrare che ni=1 m = m · n, dove ni=1 m significa ni=1 ai con tutti gli ai = m. 8. Trovare e dimostrare per induzione la formula per la dei primi Psomma n termini della progressione aritmetica di ragione k: i=0 (a + ik). Suggerimento: le somme, già considerate, dei primi n numeri, dei primi n pari e dei primi n dispari sono casi di somme di progressioni aritmetiche, le più semplici, di ragione 1 e 2 a partire da a = 0 o a = 1. Qn 9. Definire ricorsivamente il prodotto generalizzato i=1 ai e dimostrare Qn che se gli ai sono numeri interi allora i=1 ai = 1 se e solo se ai = 1 per ogni i = 1, . . . , n. 207 10. Dimostrare per induzione che se ai ≥ 0 per ogni i = 1, . . . , n, allora Pn i=1 ai ≥ 0. P 11. Dimostrare per induzione che ni=1 a2i = 0 se e solo se ai = 0 per ogni i = 1, . . . , n. P P P 12. Dimostrare che ni=1 ai = ki=1 ai + ni=k+1 ai per ogni 1 ≤ k < n. 13. Data la definizione ricorsiva di < del testo, dimostrare che x < y è equivalente a ∃z 6= 0(x + z = y). 14. Definire ricorsivamente ≤ e dimostrare che x ≤ y ↔ ∃z(x + z = y). 15. Dimostrare che per la successione di Fibonacci, per ogni n > 0 Pn i=0 ai = an+2 − 1. 208 15.7 Il principio del minimo Abbiamo detto che un insieme X è infinito se esiste una iniezione di X su un sottinsieme proprio di se stesso. Il motivo per cui questa proprietà, che si chiama anche riflessività di X, è stata assunta come definizione di “infinito” è che essa è intuitivamente falsa per gli insiemi finiti. La sua negazione è una caratteristica positiva degli insiemi finiti, che è utile nelle dimostrazioni che li riguardano, e in combinatoria22 è nota come il principio dei cassetti (in inglese Pigeonhole Principle): se si distribuiscono m oggetti in n cassetti, con m > n, in almeno un cassetto c’è più di un oggetto. In altre parole, non esiste una iniezione di un insieme con m elementi in un insieme con n < m elementi, o ancora: ogni funzione da un insieme con m elementi in un insieme con n < m elementi non è iniettiva. In una sistemazione rigorosa dei concetti di finito ed infinito, una volta scelta la riflessività come definizione fondamentale di “infinito”, ed aver formulato gli assiomi per N, il principio dei cassetti diventa dimostrabile. Consideriamo come tipici insiemi finiti gli insiemi Nn = {0, 1, . . . , n − 1}, con N0 = ∅. Un insieme si dice finito se esiste una biiezione tra di esso e un Nn . Abbiamo allora Teorema 15.7.1 Se m > n, non esiste una iniezione di Nm in Nn . Dimostrazione La dimostrazione è per induzione su n. Si noti che la formula di induzione questa volta non è atomica, ma inizia a sua volta con un ∀. Base: N0 è ∅ e non esiste nessuna funzione da un insieme non vuoto nell’insieme vuoto23 . Passo induttivo: Supponiamo vero per n che per ogni m > n non esista un’iniezione di Nm in Nn ; supponiamo per assurdo che esista invece un m > n + 1 con un’iniezione di Nm in Nn+1 , chiamiamola g. Nn+1 = Nn ∪ {n}. Deve essere n = g(i) per qualche i < m, altrimenti g sarebbe una iniezione di Nm in Nn . 22 La combinatoria è proprio lo studio degli insiemi finiti. Poiché X ×∅ = ∅ esiste solo una relazione tra X e ∅, la relazione vuota - ∅ è un insieme di coppie ordinate (e di ogni altra cosa) perché è vero che per ogni x, se x ∈ ∅ x è una coppia - ma il dominio di ∅ è ∅, non X. 23 209 Se i = m − 1 eliminiamo la coppia hm − 1, ni; altrimenti scambiamo tra di loro i valori attribuiti da g a i e a m − 1, ed eliminiamo m − 1 col suo nuovo valore n; consideriamo cioè g1 cosı̀ definita: g1 (i) = g(m − 1), e g1 (j) = g(j) per ogni altro j < m − 1, j 6= i. g1 risulta un’iniezione di Nm−1 in Nn , con m − 1 > n, contro l’ipotesi induttiva. 2 La caratteristica del “finito” di non essere iniettabile propriamente in se stesso è collegata a proprietà intuitive, come il fatto che in qualunque modo si conti un insieme finito si arriva sempre allo stesso numero. Se esistesse una iniezione g di Nm in Nn , con m > n, e se contando gli elementi di un insieme si fosse arrivati a m − 1, usando tutto Nm , si potrebbe contarli assegnando a ogni oggetto il numero i < n tale che g(j) = i dove j è il numero attribuito all’oggetto nel precedente conteggio, e si arriverebbe a contare al massimo solo fino a n − 1. Nonostante “finito” e “infinito” siano l’uno la negazione dell’altro, ci sono molte analogie strutturali tra N e gli insiemi Nn . Sono insiemi totalmente ordinati e per di più bene ordinati. La proprietà di buon ordine per N si esprime con il principio del minimo: ∅ 6= X ⊆ N → ∃x(x ∈ X ∧ ∀y ∈ X(x ≤ y)) o equivalentemente: ∅ 6= X ⊆ N → ∃x(x ∈ X ∧ ∀y < x(y 6∈ X)). Il principio del minimo giustifica l’induzione: se l’induzione fallisse per qualche proprietà A(x), allora si avrebbe A(0) e ∀x(A(x) → A(x0 )) ma ∃x¬A(x) e quindi ¬A(c) per qualche c. Ora c 6= 0 e quindi ha un predecessore c1 tale che c01 = c. Deve essere ¬A(c1 ) perché A(c1 ) → A(c). A sua volta c1 6= 0 deve avere un predecessore c2 tale che c02 = c1 e per cui ¬A(c2 ), perché A(c2 ) → A(c1 ), e cosı̀ via. Allora l’insieme {. . . , c2 , c1 , c} 0t t t t t t t s s s s r qq qq q q r r c s non avrebbe un minimo. 2 Dal principio del minimo si ricava anche un’altro principio di induzione. Se A(x) è una qualunque formula aritmetica, considerando come X il suo insieme di verità {x ∈ N | A(x)} se ne deduce un analogo principio del minimo per formule, vale a dire che 210 ∃xA(x) → ∃x(A(x) ∧ ∀y < x¬A(y)). Poiché questo vale per ogni formula, possiamo considerare una formula che inizi con una negazione, che scriveremo ¬A, e abbiamo ∃x¬A(x) → ∃x(¬A(x) ∧ ∀y < xA(y)). Di qui, contrapponendo ¬∃x(¬A(x) ∧ ∀y < xA(y)) → ¬∃x¬A(x), ovvero ∀x¬(¬A(x) ∧ ∀y < xA(y)) → ∀xA(x), e infine ∀x(∀y < xA(y) → A(x)) → ∀xA(x)24 . La validità di questo schema giustifica un’altra forma di dimostrazione per induzione, che si chiama induzione forte, o induzione completa o più correttamente induzione sul decorso dei valori . Per dimostrare ∀xA(x) è sufficiente dimostrare che ∀x(∀y < xA(y) → A(x)), ovvero, a parole, che per ogni x la validità di A(x) segue dal fatto che A vale per tutti gli y < x: ∀x(∀y < xA(y) → A(x)) ∀xA(x) P asso induttivo con ∀y < xA(y) che si può considerare l’ipotesi induttiva, nel passo induttivo, e non c’è più bisogno della base. Questo non significa che lo 0 sia trascurato; il fatto è che se si dimostra il passo induttivo nella sua generalità, cioè per ogni x, la dimostrazione vale anche per 0, per particolarizzazione, e quindi ∀y < 0A(y) → A(0). Ora tuttavia ∀y < 0A(y) è sempre vero, essendo ∀y(y < 0 → A(y)), ed essendo l’implicazione soddisfatta da ogni y per l’antecedente falso y < 0. Quindi si è dimostrato (qualcosa che implica) A(0). Bisogna fare attenzione che la dimostrazione del passo induttivo non sta- !!! bilisca la validità di ∀y < xA(y) → A(x) solo per x da un certo punto in 24 Si faccia attenzione che qui e nel seguito ∀y < xA(y) sta per (∀y < xA(y)). 211 poi, ad esempio diverso da 0, eventualità che si può presentare, e allora i primi casi restanti vanno trattati e dimostrati a parte. Ma non è la base dell’induzione, è una distinzione di casi all’interno del passo induttivo. Se interessa dimostrare ∀x > kA(x) naturalmente, è sufficiente dimostrare come passo induttivo ∀x > k(∀y(k < y < x → A(y)) → A(x)). La giustificazione consiste nel fatto che N \ Nk+1 (la catena che si ottiene cominciando da k + 1 invece che da 0) è anch’esso bene ordinato e anche per esso vale il principio del minimo. Oppure formalmente si consideri la formula B(x) ↔ x > k → A(x) e si applichi l’induzione forte a B, cioè si mostri che da ∀x > k(∀y(k < y < x → A(y)) → A(x)) segue ∀x(∀y < xB(y) → B(x)) e quindi si applichi l’induzione forte a B per concludere ∀xB(x), vale a dire ∀x > kA(x). Da ∀x > k(∀y(k < y < x → A(y)) → A(x)), per importazione delle premesse, portando all’interno x > k, ∀x(∀y(k < y < x → A(y)) → (x > k → A(x))), che si può riscrivere, utilizzando di nuovo l’importazione delle premesse, ∀x(∀y(y < x → (y > k → A(y))) → (x > k → A(x))), cioè proprio ∀x(∀y < xB(y) → B(x)).2 Esempi Il teorema che ogni numero naturale > 1 ammette una scomposizione in fattori primi25 si dimostra per induzione forte nel seguente modo: dato un numero n, o n è primo, oppure è il prodotto di due numeri minori di n e maggiori di 1. Se la proprietà vale per tutti i numeri minori di n e 25 La formulazione concisa significa che ogni numero > 1 o è primo o è un prodotto di numeri primi. Vale anche l’unicità della scomposizione, che non dimostriamo. 212 maggiori di 1, per ipotesi induttiva, questi due o sono primi o ammettono una scomposizione in fattori primi, e allora anche il loro prodotto n ammette una scomposizione in fattori primi. 2 Nella dimostrazione del passo induttivo per 1 − 12 + 13 + . . . + (−1)n−1 n1 > 0 si erano distinti due casi, a seconda che n fosse pari o dispari. Con l’induzione forte la distinzione rimane ma non porta a due dimostrazioni diverse. Si può ragionare nel seguente modo: se la disuguaglianza vale per ogni m < n allora se n è pari vale 1 − 12 + 13 + . . . − 1 n−2 >0 e quindi 1 − 12 + 13 + . . . − 1 n−2 1 + ( n−1 − n1 ) > 0 1 − n1 ) > 0, mentre se n è dispari perché ( n−1 1 − 12 + 13 + . . . − 1 n−1 >0 e quindi 1 − 12 + 13 + . . . − 1 n−1 + 1 n > 0. 2 Consideriamo di nuovo il problema di pagare qualsiasi tassa postale maggiore di 7 con francobolli da 3 e da 5 centesimi. La dimostrazione è già stata fatta per induzione, ma si può fare in modo più rapido con l’induzione forte. Dato un numero qualunque n > 7, ammesso che la possibilità di affrancare con bolli da 3 e 5 valga per tutti i numeri minori di n e maggiori di 7, si consideri n − 3. Questa cifra può essere realizzata con bolli da 3 e 5, per cui basta aggiungere un bollo da 3. Tuttavia il ragionamento funziona per gli n tali che n − 3 sia maggiore di 7, quindi non per 8, 9, 10. Quindi il passo induttivo come svolto sopra non copre tutti i numeri, e questi tre casi devono essere trattati a parte per completare il passo induttivo. 2 Come si vede dal confronto, rispetto alle dimostrazioni per induzione normale con l’induzione forte si riduce la parte prettamente aritmetica. Tale 213 possibilità è forse la ragione della attribuzione di “forte” a questo tipo di induzione. Da un punto di vista logico, la giustificazione dell’appellativo “forte” è che la stessa conclusione ∀xA(x) si ottiene nell’induzione forte da un’ipotesi ∀x(∀y < xA(y) → A(x)) più debole di A(0)∧∀x(A(x) → A(x+1)). Questa ultima affermazione sulla forza delle rispettive ipotesi a sua volta si giustifica col fatto che una stessa conclusione A(x) si ottiene una volta con un’assunzione forte come ∀y < xA(y) e una volta con l’assunzione più debole che A valga solo per il predecessore. Si tratta tuttavia di impressioni psicologiche. Il motivo per cui la dizione “forte” non è del tutto appropriata è che l’induzione forte è equivalente a quella normale. La conclusione ∀xA(x) a partire da ∀x(∀y < xA(y) → A(x)) si può giustificare infatti formalmente nel seguente modo. Si considera la formula B(x) ↔ ∀y < xA(y) e si dimostra ∀xB(x) (da cui segue ovviamente ∀xA(x)) per induzione su x, utilizzando anche ∀x(∀y < xA(y) → A(x)) nel corso della dimostrazione: Base: B(0) è immediato perché y < 0 è falso. Passo induttivo: Ammesso B(x), cioè ∀y < xA(y), da questa segue A(x), e quindi ∀y < x0 A(y) che è B(x0 ). 2 Viceversa l’induzione normale si giustifica in base a quella forte in questo modo. Supponiamo A(0) ∧ ∀x(A(x) → A(x0 )); per ottenere ∀xA(x), in base all’induzione forte è sufficiente dimostrare ∀x(∀y < xA(y) → A(x)). Distinguiamo due casi; un numero o è 0, e allora abbiamo A(0) e quindi ∀y < 0A(y) → A(0), oppure se è diverso da 0 è un successore e possiamo indicarlo x0 , e dobbiamo dimostrare ∀y < x0 A(y) → A(x0 ). Ma ∀y < x0 A(y) implica A(x), e con ∀x(A(x) → A(x + 1)) anche A(x0 ). 226 Il principio del minimo è anche equivalente all’affermazione che non esistono catene discendenti infinite; se una successione {an } fosse tale che 26 La dimostrazione formale dell’equivalenza tra induzione e induzione forte si trasporta alla dimostrazione dell’equivalenza tra il fatto che N sia bene ordinato e il fatto che N sia il più piccolo insieme che contiene 0 ed è chiuso rispetto al successore. 214 . . . < an+1 < an < . . . < a0 , l’insieme {an | n ∈ N } non avrebbe minimo. Viceversa, dato un insieme non vuoto X, preso un suo elemento a0 , se non è il minimo di X si può trovare un altro suo elemento a1 < a0 , e se neanche a1 è il minimo si continua, ma siccome la successione cosı̀ generata non può essere infinita, si trova un ak che è il minimo di X. 2 Al principio del minimo si dà ancora un’altra formulazione nota come principio della discesa finita. Esso afferma che se una proprietà P vale per un k > 0, e quando vale per un n > 0 qualunque allora vale anche per un numero minore di n, allora P vale per 0. Infatti in queste ipotesi, in cui l’insieme degli n che soddisfa P non è vuoto, il minimo deve essere 0, perché un n > 0, non sarebbe il minimo, in quanto anche qualche numero minore soddisferebbe P . Viceversa, ammesso il principio della discesa finita, e dato un insieme X non vuoto, consideriamo la proprietà P di appartenere a X. O la proprietà P vale per 0, e 0 è allora ovviamente il minimo di X, oppure 0 non ha la proprietà P . In questo caso, non è vero per P che per ogni n che ha la proprietà P anche uno minore ha la proprietà P . Quindi esiste un n che soddisfa P ma tale che nessun suo predecessore soddisfa P , ed n è il minimo di X. 2 Un’ovvia variante è che se una proprietà P vale per un h > k e quando vale per un n qualunque > k allora vale anche per un numero < n e ≥ k, allora P vale per k. Il principio della discesa finita è alla base delle dimostrazioni di terminazione degli algoritmi, quando ad un algoritmo si associa una proprietà P !!! che decresce ad ogni esecuzione di un passo dell’algoritmo. Un esempio è la dimostrazione di terminazione per l’algoritmo di costruzione degli alberi di refutazione proposizionali, nel Lemma 8.2.1. Il principio del minimo fornisce un comodo e utile metodo di definizione di funzioni: a ogni x (o a più elementi se si tratta di funzione a più argomenti) si associa il minimo y tale che A(x, y), ammesso di sapere che esistono degli y tali che A(x, y), dove A(x, y) è una formula. La definizione di minimo comune multiplo di due numeri è un esempio ovvio del ricorso a tale possibilità, che è molto frequente in aritmetica, e si può combinare con la ricorsione per definire funzioni effettivamente calcolabili. Ad esempio si definisce per ricorsione la successione dei numeri primi {pn | n ∈ N } ponendo innanzi tutto p0 = 2, quindi osservando che se è noto 215 pn allora esiste (teorema di Euclide) un numero primo maggiore di pn , e uno che dalla dimostrazione dell’infinità dei primi si sa che è minore o uguale a 2 · 3 · 4 · . . . · pn + 1. Si definisce allora pn+1 come il minimo numero primo maggiore di pn . La definizione è corretta in base solo al principio del minimo, ma l’esistenza di un confine superiore la rende anche effettivamente calcolabile in modo elementare (eseguendo una ricerca limitata a priori). A ricorsione primitiva e operatore di minimo corrispondono nei linguaggi di programmazione strutturata i costrutti repeat (for i = 0 to n) e while . . . do. 15.8 Varianti dell’induzione Tra l’induzione normale e quella forte esistono varianti intermedie, in cui per ogni x la validità di A(x) è dimostrata a partire da quella di A per alcuni specificati predecessori. Ad esempio A(0) A(1) ∀x(A(x) ∧ A(x0 ) → A(x00 )) ∀xA(x). Base Base P asso induttivo Questa forma di induzione si giustifica, come quella forte, con l’induzione normale, considerando la formula B(x) ↔ A(x) ∧ A(x0 ) e dimostrando ∀xB(x) (da cui ovviamente ∀xA(x)) per induzione, utilizzando le assunzioni relative ad A: Base: B(0) segue da A(0) e A(1). Passo induttivo: Ammesso B(x), quindi A(x) ∧ A(x0 ), dal passo induttivo per A si deduce A(x00 ), quindi A(x0 ) ∧ A(x00 ), cioè B(x0 ). 2 Varianti di questo genere corrispondono ad analoghe varianti della ricorsione primitiva, e permettono di dimostrare le proprietà della funzioni cosı̀ definite. Ad esempio la forma di induzione di sopra è quella adatta a dimostrare proprietà della successione di Fibonacci27 27 Nella precedente definizione si era posto a0 = a1 = 1; con questa, altrettanto usata, si premette uno 0 e gli altri valori sono solo slittati di un posto. 216 0, 1, 1, 2, 3, 5, 8, 13, . . . Esempio Mostriamo un legame inaspettato dei numeri di Fibonacci con numeri irrazionali, in particolare con la sezione aurea. Indicate con √ √ α = 12 (1 + 5) e β = 12 (1 − 5) le radici dell’equazione x2 − x − 1 = 0, o x2 = x + 1, dove α è la cosiddetta sezione aurea, si ha an = √1 (αn 5 − β n ). Dimostrazione Base: Per n = 0 la formula si riduce a a0 = 0 e per n = 1 a a1 = 1. Passo induttivo: Poiché an = an−1 + an−2 per ipotesi induttiva si ha an = √1 (αn−1 5 an = √1 (αn−2 (α 5 − β n−1 + αn−2 − β n−2 ) quindi + 1) − β n−2 (β + 1)). Ma α + 1 = α2 e β + 1 = β 2 , per cui an = √1 (αn 5 217 − β n ). 2 L’induzione doppia è un’altra variante dell’induzione. Quando la formula da dimostrare è del tipo ∀x∀yB(x, y), se si esegue un’induzione su x la formula di induzione è ∀yB(x, y) e nel passo induttivo, quando si deve derivare ∀yB(x, y) .. . Ipotesi induttiva ∀yB(x0 , y) può darsi che ∀yB(x0 , y) richieda di essere derivata a sua volta per induzione (anche con l’utilizzo di ∀yB(x, y) che è l’ipotesi induttiva dell’induzione su x). Si parla allora di induzione doppia, anche se si tratta di due applicazioni di un’induzione normale, solo che una è all’interno del passo induttivo dell’altra; bisogna fare attenzione a indicare con pulizia le varie tappe della dimostrazione, perché nel passo induttivo dell’induzione su y si avrà a disposizione l’ipotesi induttiva relativa all’induzione su y e l’ipotesi induttiva relativa all’induzione più esterna su x. Non è facile trovare esempi elementari in cui il ricorso all’induzione doppia è proprio necessario28 . Diamo un esempio per mostrare come si organizzano i passi della dimostrazione, scegliendo la commutatività dell’addizione, anche se per questa proprietà l’induzione doppia si potrebbe evitare (e dopo mostreremo come). Dimostriamo quindi ∀x∀y(x + y = y + x), e iniziamo con un’induzione su x. Basex : Dobbiamo dimostrare ∀y(0 + y = y + 0). ovvero ∀y(0 + y = y). 28 Nel primo teorema del paragrafo 15.7 abbiamo visto un esempio in cui la formula d’induzione era universale ma non ha richiesto l’induzione doppia. 218 e lo dimostriamo per induzione su y: Basey : 0 + 0 = 0. Passo induttivoy : Ammesso 0 + y = y, si ha 0 + y 0 = (0 + y)0 = y0. Passo induttivox : Assumiamo, come ipotesi induttivax , che ∀y(x+y = y+x) e dimostriamo ∀y(x0 + y = y + x0 ) per induzione su y. Basey : Da dimostrare è x0 + 0 = 0 + x0 . Ma 0 + x0 = (0 + x)0 = (x + 0)0 (il precedente passaggio per l’ipotesi induttivax particolarizzando ∀y a 0) = x0 = x0 + 0 . Passo induttivoy : Assumiamo l’ipotesi induttivay che x0 + y = y + x0 e dimostriamo x0 + y 0 = y 0 + x0 . x0 + y 0 = (x0 + y)0 = (y + x0 )0 = (y + x)00 dove si è usata l’ipotesi induttivay . D’altra parte 219 y 0 + x0 = = = = (y 0 + x)0 (x + y 0 )0 (x + y)00 (y + x)00 dove si è usata prima l’ipotesi induttivax particolarizzando ∀y a y 0 , e infine di nuovo l’ipotesi induttivax particolarizzando ∀y a y. Naturalmente si sono anche usate le equazioni della definizione ricorsiva dell’addizione, in particolare la seconda. Quindi il passo induttivoy è dimostrato 2 e con la sua conclusione ∀y(x0 + y = y + x0 ) anche il passo induttivox . 2 Vediamo ora come si dimostra più facilmente ∀x∀y(x + y = y + x). Occorrono più applicazioni dell’induzione, ma nessuna induzione doppia. Abbiamo già dimostrato per induzione la proprietà associativa della somma, e che ∀x(x + 0 = 0 + x), nel corso della precedente dimostrazione. Dimostriamo ora per induzione su x che ∀x(x + 1 = 1 + x). Si ricordi che in base alla definizione di addizione x0 = x + 1. Base: 0 + 1 = (0 + 00 ) = (0 + 0)0 = 00 = 1 = 1 + 0. Passo induttivo: Ammesso x + 1 = 1 + x, 1 + x0 = = = = (1 + x)0 (x + 1)0 (x + 1) + 1 x0 + 1.2 Ora infine, usando questi risultati, dimostriamo per un x generico che ∀y(x + y = y + x) per induzione su y: 220 Base: x + 0 = 0 + x. Passo induttivo: Ammesso x + y = y + x, abbiamo x + y 0 = (x + y)0 = = = = = = 15.9 (y + x)0 (y + x) + 1 y + (x + 1) y + (1 + x) (y + 1) + x y 0 + x.2 Errori e paradossi Alcuni errori delle dimostrazioni, come il dimenticare la base, sono stati già segnalati. Altri possono essere più difficili da scoprire, e alcuni portano a divertenti paradossi. Si consideri il seguente Teorema 15.9.1 Tutte le mele hanno lo stesso colore. Dimostrazione Basta dimostrare che, comunque si prendano n mele, queste hanno tutte lo stesso colore. Se prendiamo una mela, tutte le mele nell’insieme hanno lo stesso colore. Sia dato un insieme di n + 1 mele. Se togliamo una mela a, otteniamo un insieme di n mele che per ipotesi induttiva hanno lo stesso colore. Ma se rimettiamo a nel mucchio e ne togliamo un’altra b, abbiamo un altro insieme di n mele che devono avere tutte lo stesso colore; quindi b ha il colore di mele che hanno lo stesso colore di a, quindi a ha lo stesso colore delle altre. 2 Mentre nella precedente dimostrazione è presente un vero errore, diverso è il caso di ragionamenti come i seguenti, che lo studente è invitato a discutere. Sul primo non sarebbero d’accordo i sollevatori di pesi. Teorema 15.9.2 Chiunque è in grado di sollevare un mucchio di sabbia pesante quanto si vuole. Dimostrazione Dato un granello di sabbia, chiunque è in grado di sollevarlo. Se una persona è in grado si sollevare un mucchio di sabbia, e al mucchio si aggiunge un granello, la stessa persona è in grado di sollevare il 221 nuovo mucchio. Qualunque mucchio di sabbia, di qualsiasi peso, si ottiene accumulando un numero sufficiente di granelli di sabbia. 2 Sul prossimo sarebbero d’accordo i matematici, e non si può dire che sia un errore, né un paradosso, sembra solo paradossale. Teorema 15.9.3 Ogni numero è interessante. Dimostrazione Iniziamo con un’induzione empirica. 0 è interessante, al punto che si continuano a scrivere libri su di esso, rappresenta il vuoto, il nulla . . . 1 è molto interessante, genera tutti gli altri. 2 è il primo numero pari, e rappresenta tutte le dicotomie che danno origine alla vita, la divisione nella coppia, maschio e femmina, il bene e il male . . . , 3 è la trinità, il primo primo dispari, somma dei suoi predecessori . . . , 4 è il primo numero composto, ci sono i quattro cavalieri dell’Apocalisse . . . , 5 in effetti non sembra avere nessuna caratteristica unica; beh, questo è interessante di 5, che è il primo numero non interessante . . . Si vede ora come svolgere la dimostrazione, nella forma del principio del minimo: l’insieme dei numeri non interessanti è vuoto, perché se no avrebbe un primo elemento, e questo sarebbe interessante, come primo numero non interessante. 2 Non sembra invece accettabile Teorema 15.9.4 Ogni numero è piccolo. Dimostrazione 0 è piccolo, e se n è piccolo anche n + 1 è piccolo. 2 Una dimostrazione per induzione forte che contiene evidentemente un errore è la seguente, secondo cui le derivate di una qualunque potenza xn sarebbero tutte nulle, cosı̀ come Dx0 = 0, la derivata di una costante: Per la regola del prodotto, e usando l’ipotesi induttiva che la derivata di x sia identicamente 0 per ogni i < n + 1, i Dxn+1 = (Dx1 ) · xn + x · (Dxn ) = 0 · xn + x · 0 = 0. 15.10 Definizioni induttive Le definizioni induttive sono quelle che si appoggiano ai numeri naturali, ma si riferiscono ad altri enti; definiscono funzioni con dominio N ma valori 222 diversi dai numeri, in generale insiemi, relazioni. La formulazione più generale quindi si dà in termini insiemistici; una tipica definizione induttiva si presenta nella forma seguente. Dato un insieme B e una funzione F che manda insiemi in insiemi, si pone ½ I0 = B In+1 = F (In ), oppure, nella forma cumulativa, che garantisce che In ⊆ In+1 per ogni n, ½ I0 = B In+1 = In ∪ F (In ). Quindi si pone I= S {In | n ∈ N} e si dice che I è definito induttivamente, o per induzione, mediante F , con base B. I risulta un insieme qualunque, dipende da B e F , può anche essere un insieme di coppie, o un insieme di altre strutture. F anche è una funzione qualunque, ma in generale si prende crescente, rispetto all’inclusione, nel senso che se X ⊆ Y allora F (X) ⊆ F (Y ), e continua, rispetto all’unione, nel senso che “F della unione uguale unione degli F ”: S S F ( {Xj | j ∈ J }) = {F (Xj ) | j ∈ J }. Si può sempre fare in modo di utilizzare una funzione crescente ponendo F 0 (X) = X ∪ F (X). Se F è continua, la definizione cumulativa si può anche esprimere con S In = F ( i<n Ii ) avendo posto S i<n Xi = Sn−1 i=0 Xi ∅ 223 se n>0 se n=0 e ovviamente F (∅) = B. Esempi L’insieme dei polinomi in x a coefficienti reali si può definire con ½ P0 =R Pn+1 = {x · p + c | p ∈ Pn , c ∈ R} e P = S {Pn | n ∈ N }. (Esercizio: Esaminare quali siano gli elementi di P1 e P2 .) Come si vede dall’esempio, la base B non è necessariamente un insieme finito. La funzione F in questo caso è F (X) = {x · p + c | p ∈ X, c ∈ R}, che si vede facilmente essere crescente e continua, come sarà anche negli esempi successivi. L’insieme dei termini T costruiti con 0, 1, x, + e · si può definire con ½ T0 = {0, 1, x} Tn+1 = Tn ∪ {t1 + t2 | t1 , t2 ∈ Tn } ∪ {t1 · t2 | t1 , t2 ∈ Tn } e T = S {Tn | n ∈ N }. L’insieme I definito induttivamente mediante F , con base B, è caratterizzato dalla seguente proprietà: I è il più piccolo insieme che contiene B ed è chiuso rispetto a F , dove si dice che un insieme X è chiuso rispetto a F se per ogni Y se Y ⊆ X allora F (Y ) ⊆ X; con “più piccolo” s’intende che se J è un insieme che contiene B ed è chiuso rispetto a F allora I ⊆ J. I due tipi di definizione si dicono anche definizione dal basso (quella induttiva con l’unione) e dall’alto, per intersezione. 224 Un modo di esprimere in simboli il fatto che un insieme X è il più piccolo insieme che ha una certa proprietà P è infatti quello di dire che X è l’intersezione (generalizzata) di tutti gli Y tali che P (Y ), quando l’intersezione ha ancora la proprietà P . !!! Questo succede ad esempio se la proprietà P consiste, come nel caso attuale, nel contenere un dato insieme o nell’essere chiusi rispetto a una funzione. Non è sempre cosı̀, ad esempio nel campo reale l’intersezione di tutti gli intervalli che contengono propriamente l’intervallo (−1, 1) è l’intervallo chiuso [−1, 1] (estremi inclusi), che ha ancora la stessa proprietà; invece l’intersezione di tutti gli intervalli aperti (−x, x) è l’insieme {0}, che non è un intervallo aperto29 . Facciamo vedere che le due definizioni di I sono equivalenti, se si usa l’induzione cumulativa ed F è crescente e continua, e a questo scopo chiamiamo J l’insieme definito dall’alto: T J = {X | B ⊆ X ∧ ∀Y (Y ⊆ X → F (Y ) ⊆ X)}. Dobbiamo dimostrare che I = J. Per I ⊆ J basta far vedere che per ogni n In ⊆ J, cioè che se X è tale che B ⊆ X ∧ ∀Y (Y ⊆ X → F (Y ) ⊆ X) allora In ⊆ X. Lo si verifica facilmente per induzione (esercizio). Ne segue che I ⊆ J per la proprietà di minimalità dell’unione. Per J ⊆ I basta far vedere che I è uno degli insiemi di cui J è l’intersezione, quindi che B ⊆ I e I è chiuso rispetto a F . B ⊆ I è ovvio. È sufficiente controllare la proprietà di chiusura per sottoinsiemi finiti di I. InfattiSogni Y ⊆ I, ogni Y in verità, è l’unione dei suoi S sottoinsiemi finiti, Y = {Z ⊆ Y | Z finito}, e se F è continua F (Y ) = {F (Z) | Z ⊆ Y e Z finito}. Ora se Z ⊆ I e Z è finito, allora Z ⊆ In per qualche n30 , e F (Z) ⊆ F (In ) ⊆ In+1 , quindi F (Z) ⊆ I. 2 Questo è il motivo per cui si sceglie la forma cumulativa dell’induzione anche quando non sarebbe necessario; in tal modo si garantiscono le proprietà richieste dalla dimostrazione, e le supporremo sempre verificate anche se la presentazione della definizione induttiva non lo mostra esplicitamente. 29 Con intervallo aperto (−x, x) s’intende {y | −x < y < x}. Perchè Ir ⊆ Ir+1 : allora ogni elemento di Z è in qualche Ir , e tutti sono quindi nel massimo di questi. 30 225 Di solito infatti la funzione F è precisata da una serie di operazioni da compiere sugli elementi dell’insieme In per ottenere In+1 e allora per ogni operazione si ha una clausola induttiva. La definizione del precedente insieme di termini T si presenta nel seguente nel seguente modo: 0, 1, x sono termini Base: Clausola induttiva 1: Se t1 e t2 sono termini, anche t1 + t2 è un termine. Clausola induttiva 2: Se t1 e t2 sono termini, anche t1 · t2 è un termine. Qualche volta si aggiunge, ma più spesso si trascura, una Clausola di chiusura: Null’altro è un termine. Per dare una definizione induttiva di un insieme I in sostanza, prima si dice esplicitamente che certi elementi appartengono a I; quindi si afferma che se certi elementi, di una determinata forma, appartengono a I, anche altri, di altra forma collegata, appartengono a I. La clausola di chiusura è da intendersi nel senso che non solo I contiene gli elementi della base ed è chiuso rispetto alle operazioni indicate dalle clausole induttive, ma è il più piccolo insieme del genere. Quindi è uguale all’insieme S {In | n ∈ N } e qualcosa è in I se e soltanto se è in un In , cioè lo è in base all’applicazione iterata un numero finito di volte delle clausole di base e induttive. Esempi La definizione delle proposizioni P aveva la forma induttiva Base: Una proposizione atomica è una proposizione. Clausola induttiva 1: Se A è una proposizione, anche (¬A) lo è. Clausola induttiva 2: Se • è un connettivo binario, e se A e B sono proposizioni, anche (A • B) lo è. Si tratta di una definizione per induzione cumulativa: quando (A • B) è inserito in In+1 , A e B non sono necessariamente entrambe in In , ma in uno qualsiasi dei livelli precedenti. Definiamo l’insieme A degli alberi binari finiti (qui brevemente “alberi”), intesi come insiemi finiti con un ordine parziale: 226 Base: Un singoletto {•} è un albero, che è radice, in quanto non ha predecessori immediati, ed è foglia in quanto non ha successori immediati (o figli). Clausola induttiva: Dato un albero, se ad alcune sue foglie si aggiungono uno o due successori immediati si ha un albero. Vediamo come sono formati alcuni primi livelli di A. La base A0 contiene solo l’albero • mentre A1 contiene • • ↓ • • .& • • e A2 oltre a quelli di A1 • ↓ • ↓ • • .& • • ↓ • • .& • • .& • • • ↓ • .& • • • .& • • .& • • • .& • • .& ↓ • • • 227 • .& • • ↓ • • .& • • ↓ .& • • • • .& • • .& .& • •• • Infine mostriamo come si definisce una relazione, come insieme di coppie, anche se spesso per le relazioni si adottano equivalenze di tipo ricorsivo, come abbiamo visto per <. Proprio la relazione < si può definire con ½ I0 = {hx, x0 i | x ∈ N } In+1 = In ∪ {hx, y 0 i | hx, yi ∈ In }, e I = <, che mostra come < sia l’iterazione della relazione “successore” (che è la base I0 ). La definizione ricorsiva che abbiamo visto in precedenza, da cui segue x < y ↔ ∃z 6= 0(x + z = y), mostra anch’essa come < sia l’iterazione del successore, dal momento che l’addizione è l’iterazione del successore; quest’ultima equivalenza peraltro è piuttosto la definizione di una formula, che a sua volta definisce la relazione, che non la definizione della relazione come insieme. Un altro modo di presentare la relazione < è quello di definirla come la chiusura transitiva della relazione successore S = {hx, x0 i | x ∈ N }. La chiusura transitiva di una relazione S è la più piccola relazione che estende S ed è transitiva; se scriviamo T rans(R) per ∀x, y, z(hx, yi ∈ R ∧ hy, zi ∈ R → hx, zi ∈ R), e T C(S) per “chiusura transitiva di S” allora T T C(S) = {R | S ⊆ R e T rans(R) }. L’intersezione non è fatta sull’insieme vuoto, perché esiste sempre almeno una R soddisfacente le condizioni richieste, ad esempio la relazione totale. Anche la chiusura transitiva di S ammette in generale una definizione induttiva dal basso (come quella vista sopra per <), data da ½ I0 = S In+1 = In ∪ {hx, yi | ∃z(hx, zi ∈ In ∧ hz, yi ∈ S)}, S e T C(S) = ∞ i=0 {In }. Esempi 228 La relazione d’ordine parziale negli alberi è la chiusura transitiva della relazione di successore immediato che è inclusa nella definizione ricorsiva degli alberi. La relazione “B è una sottoproposizione di A” è la chiusura transitiva della relazione “B è una sottoproposizione immediata di A” della definizione del paragrafo 3.2.1. Quando un insieme I è definito induttivamente, per dimostrare che ogni elemento di I ha una proprietà P si può usare l’induzione. Ad ogni elemento x ∈ I è associato un numero, il più piccolo n tale che x ∈ In . Chiamiamo altezza di x questo numero31 . Esempio L’altezza di un polinomio rispetto alla definizione induttiva di P è il grado del polinomio. Un’induzione sull’altezza di x è un’induzione su n, che tuttavia prende in esame non solo tutti i numeri naturali, ma tutti gli elementi di tutti i livelli In della gerarchia in cui è strutturato I. Essa si presenta nella seguente forma: Base: Ogni elemento di altezza 0, cioè ogni elemento di I0 , ha la proprietà P. Passo induttivo: Ammesso che ogni elemento di altezza n abbia la proprietà P , si dimostra che ogni elemento di altezza n + 1 ha la proprietà P . Sn−1 Gli elementi di altezza n sono gli elementi di In \ i=0 Ii . Se si vuole che l’ipotesi induttiva riguardi tutto In occorre utilizzare l’induzione forte: Passo induttivo: Ammesso che ogni elemento di altezza minore di n abbia la proprietà P , si dimostra che ogni elemento di altezza n ha la proprietà P. Esempio Dimostriamo che : 31 Nella definizione delle proposizioni del paragrafo 3.2.1 le proposizioni atomiche avevano altezza 1, mentre nella terminologia attuale hanno altezza 0; lo stesso per gli alberi, secondo la definizione del paragrafo 3.2.2 l’albero • aveva altezza 1, mentre ora ha altezza 0; non ci sarebbe alcuna difficoltà ad adattare la notazione delle definizioni induttive in modo da ristabilire l’accordo, usando N \ {0} o N \ Nk invece di N.Tuttavia nella trattazione generale delle definizioni induttive, non c’è motivo per non usare tutti i numeri, incluso 0. La precedente definizione di altezza di un albero si giustificava intuitivamente in base alla nozione di lunghezza dei rami. 229 Ogni proposizione ha un numero pari di parentesi. Dimostrazione Per induzione forte. Supponiamo che tutte le proposizioni di altezza minore di n abbiano un numero pari di parentesi. Indichiamo con ]A il numero di parentesi di A. Sia A una proposizione di altezza n. Se n = 0, la proposizione è atomica, della forma (p), e ha due parentesi. Se n > 0, A è una proposizione composta, e il fatto cruciale è che le sue componenti hanno altezza minore di quella di A. Si danno due casi. Se A è (¬B), per ipotesi induttiva ]B è un numero pari e ]A = ]B + 2 è anch’esso pari. Se A è (B • C) composta con un connettivo binario, per ipotesi induttiva ]B e ]C sono pari e ]A = ]B + ]C + 2 è anch’esso pari. 2 Insieme alle dimostrazioni induttive, anche le definizioni ricorsive si estendono agli insiemi definiti induttivamente. L’estensione di un’interpretazione i a una valutazione i∗ del linguaggio proposizionale (paragrafo 3.3) è una !!! definizione ricorsiva sull’altezza delle proposizioni. Altre volte si usano misure di complessità diverse dall’altezza. Per poter fare dimostrazioni induttive per tutti gli elementi S∞ di un insieme X, quello che importa è che X si possa rappresentare come i=k Xi , indipendentemente da come è stato originariamente definito. Esempio L’algoritmo di trasformazione di una proposizione in forma normale congiuntiva (o disgiuntiva) del paragrafo 6.3 presentava una ricorsione sulla lunghezza delle proposizioni. L’esecuzione delle operazioni sintattiche da compiere su una proposizione era riportata, attraverso l’applicazione delle leggi distributive, a proposizioni di lunghezza minore: da A∨B ≡ (C ∧D)∨B via (C ∨ B) ∧ (D ∨ B) a C ∨ B e D ∨ B. Data una forma normale congiuntiva per queste ultime, si ha una forma normale congiuntiva anche per A ∨ B. Si noti che C ∨ B e D ∨ B potrebbero avere invece la stessa altezza di A ∨ B, se prevale l’altezza di B. La misura di complessità associata in modo naturale alla definizione delle proposizioni è l’altezza dell’albero di parsing, ma vale anche S P= ∞ i=3 Li dove Li è l’insieme delle proposizioni che hanno (come liste) lunghezza i (alcuni Li sono vuoti, vedi esercizi), o la gerarchia cumulativa 230 P= S∞ i=3 L≤ i dove L≤ i è l’insieme delle proposizioni che hanno lunghezza ≤ i. 15.10.1 Esercizi Dimostrare per induzione 1. Ogni proposizione contiene almeno una parentesi. 2. Ogni proposizione inizia con una parentesi sinistra e termina con una parentesi destra. 3. In ogni proposizione il numero di parentesi sinistre è uguale al numero di parentesi destre. 4. Se si considera una sottosequenza iniziale propria di una proposizione, in essa il numero di parentesi sinistre è maggiore di quello delle parentesi destre. Questo risultato è quello che giustifica il fatto che il contatore di parentesi torna a zero solo alla fine di una formula. 5. Ogni proposizione ha lunghezza (comme lista) maggiore o uguale a 3. 6. In nessuna proposizione occorrono due connettivi consecutivi. 7. In ogni proposizione non atomica occorre almeno un connettivo. 8. In nessuna proposizione occorre la sottosequenza “()”, né “)p”. 9. Se Li è l’insieme delle proposizioni di lunghezza i, trovare quali sono gli i che sono lunghezze di proposizioni (per cui cioè Li 6= ∅). 10. In ogni proposizione la sua lunghezza è maggiore della sua altezza. 11. Dimostrare per induzione sul numero di lettere che il numero delle interpretazioni delle proposizioni A[p1 , . . . , pn ] è 2n . 12. Determinare e dimostrare quanti sono gli alberi di altezza n. 13. Determinare e dimostrare quante sono, al massimo, le foglie e i rami di un albero di altezza n. 231