2. La logica delle proposizioni: semantica Di cosa tratta la logica? Da quello che abbiamo già detto, appare chiaro che le radici della argomentazione logica sono già nel linguaggio naturale, nella stessa struttura del discorso e delle frasi che lo compongono. Occorre però in logica fare un cambiamento nel modo in cui le consideriamo. Gli oggetti fondamentali sono le proposizioni, nelle quali riconosciamo le frasi del linguaggio naturale, considerate però indipendentemente dal linguaggio in cui le esprimiamo e dal contesto del loro enunciato. Le proposizioni sono in fondo quelle che nel linguaggio naturale appaiono come asserzioni, frasi cioè che possono essere vere o false in sé e a prescindere dal contesto: <2 è un numero pari>, <la luna è fatta di formaggio svizzero>, <Nicola è il padre di Michele>, etc. Non sono proposizioni le domande (<che ore sono?>) o gli ordini (<apri la finestra!>) o le interiezioni (<ahia!>) o le frasi in un certo contesto (<qui e ora piove>: il dove e il quando possono solo essere ricavati dal contesto). La definizione classica di ‘proposizione’ richiede che essa debba essere o vera o falsa. Fondamentale è quindi il concetto di verità, il quale è chiaramente un concetto ‘semantico’, in quanto una frase è vera se la sua interpretazione coincide con lo stato delle cose. Quindi <la neve è bianca> è vero se la neve è bianca, è falso nel caso contrario, in generale ‘p’ è vera se e solo se p. Già Aristotele aveva fissato la sua attenzione sulle proposizioni e aveva iniziato a distinguerne i diversi tipi. Oggi possiamo distinguere tra proposizioni individuali: <Michele è alto>, che in genere corrispondono ad osservazioni empiriche; particolari: <qualche studente arriva da Barletta> cioè <c’è almeno uno studente che arriva da Barletta>; universali : <tutti i multipli di 4 sono pari>, e queste possono essere matematiche o anche empiriche, vere se sempre verificate (<ogni giorno sorge il sole>). Possiamo poi distinguere proposizioni positive (quelle precedenti) o negative (ottenute aggiungendo la negazione): <Antonio non è alto>, <qualche docente non ama le domande>, <nessun centravanti è basso> (attento: è diversa da <non tutti i centravanti sono bassi> o <alcuni centravanti non sono bassi>, ma coincide con <tutti i centravanti non sono bassi>). E aveva scoperto che talora da due premesse si può trarre una conclusione, ad esempio da <tutti gli ateniesi sono greci> e da <tutti i greci sono mortali> si può dedurre che <tutti gli ateniesi sono mortali>, oppure da <qualche ateniese è ricco> e <tutti i ricchi sono potenti> si può dedurre che <qualche ateniese è potente>: erano questi ‘sillogismi’ validi. Ma da <qualche ateniese è alto> e <qualche ateniese è biondo> non si può dedurre nulla intorno alla relazione tra alti e biondi. Ma la cosa più importante era che la deduzione non dipendeva dal significato delle premesse ma solo dalla forma del sillogismo e dal loro essere vere. Se le premesse erano vere e il sillogismo corretto era vera anche la conclusione, altrimenti non si poteva avere alcuna certezza. La deduzione era quindi un fatto puramente formale, sintattico. E lo stesso Aristotele aveva fissato i ‘principi formali’ che regolavano l’uso del concetto di ‘verità’: in primo luogo il principio di non contraddizione: “non è possibile che un proposizione sia nel contempo vera e falsa”, e poi il principio del terzo escluso: “una qualsiasi proposizione o è vera o è falsa”. E delinea anche la caratterizzazione della verità per corrispondenza: “è vero dire che è ciò che è o che non è ciò che non è, è falso dire che è ciò che non è o che non è ciò che è”: a parte lo scioglilingua si fissa qui il carattere semantico del concetto di verità, cioè il suo connettere la realtà e il linguaggio. Sono principi che ancor oggi governano la logica. Nella logica delle proposizioni non analizziamo la struttura delle proposizioni, consideriamole unità elementari da indicare in genere con una lettera: P, Q, etc. Possiamo invece pensare di costruire proposizioni ‘complesse’ formate da proposizioni elementari unite da connettivi. Ad esempio {2 è un numero pari e 3 è un numero primo} è una proposizione, quella che si dice in genere una ‘congiunzione’. E’ vera? Istintivamente ci viene da rispondere si. Perché? Perché il nostro uso linguistico ritiene vera una congiunzione se entrambe le proposizioni congiunte sono vere, cosa che in questo caso accade. Se almeno una delle due fosse falsa riterremmo la proposizione falsa. La logica delle proposizioni assume così il carattere di un linguaggio formale, del quale possiamo costruire l’ ‘alfabeto’ e la ‘grammatica’. Oltre le lettere per le proposizioni elementari introduciamo un segno per la congiunzione: (talora lo leggerò ‘and’ per distinguerlo dall’uso della congiunzione ‘e’ nel linguaggio naturale). Allora se indichiamo {2 è un numero pari} con P {3 è un numero primo} con Q Possiamo scrivere {2 è un numero pari e 3 è un numero primo} come P Q. Abbiamo detto che le proposizioni sono caratterizzate dall’essere vere o false, e quindi quello che dicevamo sul nostro uso linguistico riguardo la congiunzione possiamo tradurlo in una tavola di verità che ci fornisce il valore di verità di P Q a partire da quello di P e di Q. Introduciamo a tal fine i segni 1 (per ‘vero’) e 0 (per ‘falso’). Le tavole ci danno i valori di verità delle diverse possibili interpretazioni delle lettere proposizionali. Cioè la lettera P la posso interpretare come una proposizione vera (ad esempio {2 è un numero pari}) o come una proposizione falsa (ad esempio {2 è un numero dispari}). Le interpretazioni di P per cui P è vera (o soddisfatta) si diranno in seguito i modelli di P. Il senso che noi diamo alla congiunzione ci porta allora a scrivere la seguente tavola di verità per la . P Q PQ 0 0 0 0 1 0 1 0 0 1 1 1 Un altro tipo di proposizione composta si ottiene negando una proposizione P col segno (che leggerò ‘not’). Se P ad esempio è {2 è un numero pari}, P è la proposizione {2 non è un numero pari}. Il valore di verità è ovviamente dato dalla tabella P P 0 1 1 0 D’ora in poi useremo le lettere maiuscole P, Q, A, B, … per indicare tanto proposizioni elementari, quanto proposizioni composte formate con connettivi. Analogamente si possono costruire le tavole di verità della disgiunzione inclusiva (che leggerò ‘or’), il “se e solo se” , ed il “se…allora” , detta anche ‘implicazione’. P Q P Q P Q P Q 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 Sono abbastanza ovvie, tranne la penultima, che afferma che una implicazione è vera sempre tranne quando è vera l’antecedente e falso il conseguente, e quindi risultano vere proposizioni del tipo {se 2 è un numero dispari allora la luna è un satellite della terra}, oppure {se 2 è un numero dispari allora la luna è di formaggio}! Decisamente poco convincente, in quanto il nostro uso comune della implicazione non considera solo i valori di verità di antecedente e conseguente ma anche l’esistenza di una argomentazione che li leghi, ma vedremo più in là le ragioni della nostra tavola. In verità potremmo fare a meno del connettivo e semplificheremmo la teoria, ma poiché è molto usato lo conserveremo. Il connettivo ha un solo argomento e quindi lo diremo ‘unario’, gli altri hanno due argomenti e allora li diremo ‘binari’. Comunque useremo i connettivi sia come segni del nostro linguaggio proposizionale sia come operazioni sui valori di verità. Possiamo allora costruirci il linguaggio della logica delle proposizioni . L’alfabeto è dato da {,, , , ,P,Q,R,….} , supponendo di poter introdurre quante si vogliano lettere proposizionali. Abbiamo visto che i linguaggi formali possono essere definiti tramite le regole che generano i loro elementi. Nel nostro linguaggio proposizionale le regole sono queste, e le espressioni così generate si dicono ‘formule ben formate’(fbf): i) ii) iii) iv) Abbiamo un gruppo di lettere proposizionali che sono ‘proposizioni’: P, Q, R, etc. Se ho una proposizione Prop, allora posso generare la proposizione Prop Se ho due proposizioni Prop1 e Prop2, posso generare le proposizioni Prop1 Prop2, Prop1 Prop2, Prop1 Prop2, Prop1 Prop2 Nient’altro è una proposizione. Le formule ben formate su questo alfabeto (le ‘proposizioni’) sono quindi tutte le lettere proposizionali, e le espressioni che si possono costruire reiterando le regole precedenti. Così ad esempio PQ non è una proposizione in quanto non è una formula ben formata. In particolare si ricordi che la giustapposizione di due proposizioni, PQ, non è una proposizione. Il fatto che queste siano tutte e sole le proposizioni implica che tutte e sole queste assumono valori di verità tramite le tavole. Si aggiungono anche talora le parentesi per indicare l’ordine con cui eseguire le operazioni espresse dai connettivi, ma potremmo farne a meno ottenendo una presentazione più chiara, scrivendo l’espressione come un albero (analogo all’albero genealogico di una famiglia) con alla base le lettere proposizionali ed in mezzo i connettivi dall’alto in basso nell’ordine di applicazione. I concetti di albero e grafo sono molto utili nella matematica discreta, e soprattutto nelle sue applicazioni alla computer science. Ma non li definiremo ora una volta per tutte, ma li preciseremo durante il corso, seguendone le applicazioni. Diamo ora le prime definizioni. ALBERI E GRAFI Il concetto di ‘albero’ è un caso particolare del concetto di grafo, una struttura costituita da due insiemi: un insieme di vertici e un insieme di archi, ove un arco connette una coppia di vertici. Se la coppia ha una direzione (è una ‘coppia ordinata’) l’arco viene rappresentato da una freccia e il grafo si dice ‘diretto’, altrimenti (è una ‘coppia non ordinata’) viene rappresentato da una semplice linea e il grafo si dice ‘indiretto’. Potremmo anche considerare tutti i grafi come diretti, e considerare una coppia non ordinata come una coppia di frecce nelle due direzioni opposte. Talora la freccia (coppia ordinata) non viene indicata con un ordine esplicito, che è sottointeso (ad esempio la direzione dall’alto in basso). Un cammino è poi una sequenza di archi in cui il vertice terminale di un arco coincide col vertice iniziale dell’arco successivo. Se il cammino termina col vertice iniziale, esso si dice un ciclo. Un albero è un grafo senza cicli. Un caso particolare che ora useremo è l’albero diretto in cui la direzione delle frecce è data supponendo per convenzione che gli archi siano diretti dall’alto in basso. Useremo un tale albero per descrivere le fbf senza usare parentesi. Nella scrittura della espressione come albero, usiamo la convenzione che ogni arco sia diretto ‘dall’alto verso il basso’, dal connettivo ai suoi argomenti, cioè ‘top down’, e la regola di computazione sia ‘bottom up’ cioè ‘dal basso verso l’alto’. Ad esempio la formula P (Q P) si può scrivere (in rosso il connettivo da eseguire): P (Q P) QP P P Q P P Q P L’albero a destra esplicita solo il connettivo da eseguire e le proposizioni elementari. Così possiamo ad esempio calcolare il valore di verità della proposizione composta per P vero e Q falso: 1 1 1 0 0 1 Il calcolo del valore di verità della formula, dati i valori di verità di P e Q, si ottiene sostituendo questi ultimi alle lettere proposizionali e calcolando iterativamente il valore di verità dei nodi intermedi applicando la tavola di verità del connettivo in rosso. Si possono costruire proposizioni complesse iterando l’uso dei connettivi: prendiamo ad esempio la proposizione P (Q P). Ne possiamo costruire la tavola di verità iterando le tavole dei connettivi. Altro esempio P ( P Q). P Q P P (Q P) P P Q P Q P ( P Q). P Q 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 1 1 Tipi speciali di formule sono i) le cosiddette tautologie, formule sempre vere, come ad esempio A A (principio del terzo escluso). Si vede subito che essa è vera qualunque sia il valore di verità di A. ii) Altrettanto importanti le contraddizioni, formule sempre false, come ad esempio A A (principio di non contraddizione). Abbiamo infatti che <n è un numero intero pari> può essere sia vera che falsa (dipende da n), ma <n è un numero intero pari oppure n non è un numero intero pari> è sempre vera, e <n è un numero intero pari e n non è un numero intero pari> è sempre falsa (qualunque sia n). La prima formula nell’esempio di cui sopra ha la stessa tavola della tautologia, la seconda ha la stessa tavola della formula P. Cioè esistono formule con la stessa tavola, che diremo equivalenti. E’ facile verificare che anche [(P ( P Q)] P è una tautologia. In generale: se A è equivalente a B, allora A B è una tautologia, e viceversa. Ed è anche ovvio che, date due formule equivalenti, esse si possono sostituire a vicenda in ogni espressione logica senza mutarne i valori di verità. Molte equivalenze sono banali (come ad esempio tra P e P), ma tutte si possono verificare tramite le tavole di verità. LINGUAGGIO OGGETTO E METALINGUAGGIO Abbiamo detto in precedenza che se A è equivalente a B, allora A B è una tautologia. In questa frase appaiono due tipi di linguaggio: il linguaggio del calcolo delle proposizioni (A, B, A B) e il linguaggio italiano con cui enuncio una proposizione che ‘parla’ di proposizioni (‘è equivalente’, ‘è una tautologia’). E’ importante distinguere questi due linguaggi: il primo lo diremo linguaggio oggetto, il secondo metalinguaggio, poiché è un linguaggio che non parla di un mondo di oggetti, ma di un altro linguaggio. E’ qualcosa che esiste anche nel linguaggio naturale, laddove si usano le virgolette per denotare un oggetto del linguaggio oggetto trattato nel metalinguaggio, ad esempio <’topo’ è bisillabo> oppure <’la neve è bianca’ è vera se e solo se la neve è bianca>. Il linguaggio naturale talora però ‘amalgama’ i due linguaggi in un unico linguaggio, come in <in questa frase niente verbi>, <questa frase è interrogativa>, e creando anche paradossi come il celebre paradosso del mentitore: <questa frase è falsa>, la quale se è vera è falsa, se è falsa è vera, in quanto è una frase del metalinguaggio relativa a se stessa come oggetto della frase. La frase è paradossale ma non è una proposizione, non potendo essere né vera né falsa, pur avendone l’aspetto. Ma i paradossi nel linguaggio naturale sono molto frequenti, dovuti al fatto che il linguaggio ha scopi più pragmatici che puramente dichiarativi. Ad esempio il ‘paradosso’ famoso del Comma22 : <chi è pazzo può chiedere di essere esentato dalle missioni di volo, ma chi chiede di essere esentato dalle missioni di volo non è pazzo>, più o meno schematizzabile come (AB) (BA), con A=<essere pazzo>, B=<chiedere di essere esentato dalle missioni di volo>: la tavola di verità mostra che non è una contraddizione, ma è un esempio di consequentia mirabilis (sulla quale torneremo in seguito): basta usare le tavole di verità per scoprire che è soddisfatta se il richiedente non è pazzo. Per distinguere i diversi livelli d’uso delle parole nel linguaggio i logici medievali crearono la teoria delle suppositiones, che tra l’altro distingueva ad esempio l’uso della parola ‘topo’ in frasi come {topo è bisillabo}, {il topo sta mangiando il formaggio}, {il topo è un mammifero}. OPERATORI LOGICI E CIRCUITI I nostri e sono connettivi tra proposizioni e operazioni su i valori di verità delle proposizioni, che possiamo confrontare con le operazioni aritmetiche. Ad esempio essi godono della proprietà commutativa: P Q è equivalente a Q P, P Q è equivalente a Q P (basta verificare la simmetria tra P e Q nelle loro tavole di verità). Godono anche della proprietà associativa: (P Q) R è equivalente a P (Q R), (P Q) R è equivalente a P (Q R) (verifica!). Questo vuol dire che possiamo scrivere P Q R e P Q R, senza parentesi. Cioè e possono essere considerate operazioni non necessariamente binarie, ma su un numero qualsiasi di argomenti, come la somma e il prodotto. Un riflesso di questo fatto formale è anche un fatto tecnologico: alle origini della computer science i circuiti logici potevano essere costruiti tramite circuiti elettrici, in cui le lettere proposizionali esprimevano lo stato dei relais (un relais è un interruttore controllato da un magnete attivato da un circuito, che lo chiude o apre a seconda che nel circuito passi corrente o no) . L’ era caratterizzato da un circuito in serie, e l’ da un circuito in parallelo: P P Q R P P Q R Si verifica facilmente anche che valgono le proprietà distributive dell’ rispetto all’ e dell’ rispetto all’ , mentre in aritmetica vale solo la proprietà distributiva del prodotto rispetto alla somma. ALTRE PRPPRIETA’ Si possono ovviamente costruire formule con un numero qualsiasi di lettere proposizionali: ad esempio (P R) (Q P) (S R). (per costruirne la tavola di verità devi però considerare 16 interpretazioni distinte) Altre equivalenze importanti sono le leggi di de Morgan: e: (P Q) (P Q) equivale a P Q equivale a P Q che possiamo facilmente verificare con le tavole di verità. Indichiamo con 1 una generica tautologia e con 0 un generica contraddizione, ovviamente, qualunque sia P 1P equivale a P, 0P equivale a 0, 1P equivale a 1, 0P equivale a P. Esercizi. 1. Puoi costruire il circuito elettrico con relais che realizza il ? Nella fase pionieristica del computer le funzioni di 0 e 1 si costruivano con circuiti elettrici (corrente che passa o non passa), tramite and-gates e or-gates (circuito in serie o in parallelo) e interruttori controllati da relais per la negazione, usando quindi solo tre connettivi. Puoi costruire il circuito elettrico che realizza la proposizione logica P (Q P)? 2. Se ho due lettere proposizionali , quante diverse tavole di verità posso costruire? Sei in grado per ognuna di esse di scrivere una formula che abbia tale tavola di verità? 3. Verifica che sono tautologie le proposizioni: a) (P P) Q b) (P P) P c) (P Q) ( Q P) Mentre non è una tautologia (P Q) ( Q P) SCELTA DEI CONNETTIVI Ogni tavola di verità potrebbe definire un connettivo: quelli che abbiamo introdotto sono quelli comunemente usati perché corrispondenti a costrutti linguistici comuni. Possiamo però ricordarne un altro, il connettivo or esclusivo PQ (vero se e solo se i valori di verità di P e Q sono diversi), la cui tavola di verità è P Q PQ 0 0 0 0 1 1 1 0 1 1 1 0 Nel linguaggio si usa per alternative secche del tipo {un numero intero è pari o dispari}, ma è poco usato in logica, ed usato però in algebra come operazione negli ‘anelli di Boole’. Ovviamente si possono creare connettivi unendo altri connettivi ad esempio il connettivo NAND (P,Q) è definito come (P Q ), e il connettivo NOR (P,Q) è definito come (P Q ). E’ utile notare come connettivi, operazioni, funzioni binarie possano avere due tipi diversi di notazione, infissa (il segno è posto in mezzo agli argomenti) o prefissa (il segno è posto prima degli argomenti tra parentesi), così che potrei scrivere la somma 3+4 nella forma prefissa +(3,4) o la unione P Q nella notazione prefissa (P, Q), e il NAND (A,B) nella notazione infissa A NAND B: la scelta è solo per convenzione ed ha ragioni storiche. Per completezza ricordiamo che esiste anche la notazione postfissa. Esercizi. 1. Costruisci le tavole di verità dei connettivi NAND e NOR. Puoi mostrare come scrivere tutte le tavole di verità usando solo due connettivi? O magari uno solo? 2. Verifica con le tavole che P Q è equivalente a P Q P Q è equivalente a (P Q) (Q P) P Q è equivalente a (P Q) (dalle leggi di de Morgan). 3. Le proprietà associativa e commutativa valgono anche per , e ? 4. Considera un catena di disgiunzioni in cui compaiano P e P, del tipo A B … P … P …. Q, che cosa puoi dire della sua tavola di verità? E che succede se hai un’analoga catena di congiunzioni, del tipo A B … P … P ….Q ? FORME NORMALI Con l’algoritmo per costruire le tavole di verità sappiamo costruire i valori di verità di qualsiasi proposizione. Possiamo porci il problema inverso: dalla tavola di verità costruire una proposizione che abbia quella tavola di verità. Era questo un problema importante quando i circuiti logici erano costruiti con i relais. Ad esempio, data la tavola di verità X, possiamo trovare una proposizione che abbia tale tavola di verità?: • P Q R X ? ?? • 0 0 0 0 0 0 • 0 0 1 1 0 1 • 0 1 0 0 0 0 • 0 1 1 1 0 0 • 1 0 0 1 0 0 • 1 0 1 1 0 0 • 1 1 0 0 0 0 • 1 1 1 1 1 0 Prendiamo una delle interpretazioni che ha valore di verità 1, ad esempio quella relativa alla interpretazione 1 1 1, e consideriamo la tavola di verità che ha 1 solo in tale interpretazione (è quella contrassegnata da ?). Quale proposizione ha tale tavola di verità? Ovviamente P Q R. • Consideriamo un’altra tavola di verità analoga, che abbia cioè valore 1 solo per una interpretazione, ad esempio la tavola contrassegnata da ??, che ha valore 1 solo per la interpretazione 0 0 1. Per analogia la proposizione con una tale tavola sarà PQ R. • Consideriamo ora tutte le interpretazioni che hanno valore 1: 001, 011, 100, 101, 111. Tavole di verità che hanno il valore 1 solo in una di queste saranno: (PQ R),(PQ R),(PQ R), (PQ R),(PQ R). Se ora faccio la loro disgiunzione avrò una proposizione con la tavola di verità X: (PQ R)(PQ R)(PQ R)(PQ R)(PQ R) , una disgiunzione di congiunzioni, nota come forma normale disgiuntiva. Se ora applico la proprietà distributiva dell’ rispetto all’, e uso le proprietà dei connettivi per semplificarla, la trasformo in una congiunzione di disgiunzioni, detta forma normale congiuntiva, o anche forma di clausola, che sarà molto importante nella programmazione logica che vedremo più in là. Nel nostro esempio la forma di normale congiuntiva è (P R Q) (P R Q) (P R Q), o in forma più semplice (P R) (R Q) (P R) (R Q) (Verifica!) PROBLEMI 1. Date le due proposizioni : A(BC) e (AB)C, a) Verifica con le tavole di verità se sono equivalenti a) A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 (BC) A(BC) (AB) (AB)C 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 Dimostra che sono equivalenti con le regole di trasformazione tra formule equivalenti (de Morgan, etc.) A(BC) A (BC) ( A B) C (A B)C (AB)C