Introduzione alla logica proposizionale Mauro Bianco – “Questa frase è falsa” Contents 1 Proposizioni 1 2 Altri operatori 4 Nota 1 : Le parti delimitate da ”***” sono da considerarsi facoltative. Proposizioni 1. La frase “c’è il sole” può essere vera o falsa. La sua negazione, “non cè il sole”, è rispettivamente falsa o vera. 2. La frase “oggi c’è il sole oppure piove” è vera se c’è il sole, se piove o se entrambe le situazioni si presentano. 3. La frase “oggi c’è il sole e piove” è vera se e solo se entrambe le situazioni sono verificate. Notiamo che sostituendo nelle frasi precedenti (proposizioni) le parti non sottolineate con altre affermazioni qualsiasi, le condizioni che verificano le proposizioni non cambiano. Ad esempio la proposizione “la casa brucia e il cielo è blu” è verificata se contemporaneamente la casa brucia e il cielo è blu. Possiamo sotituire quindi alle frasi contingenti delle proposizioni generiche e dire che se A è vera allora not A è falsa, e se A è falsa not A è vera. Allo stesso modo A and B è vera se e solo se sono vere entrambe A e B, e A or B è vera se almeno una tra A e B è vera. Come abbiamo detto A e B possono essere qualsiasi proposizione, per esempio, definendo C = not A and B, l’espressione logica (o formula) A or B diventa A or ( not A and B). A, B, C, etc., sono definite variabili logiche. I valori di verità vero e falso, indicate rispettivamente con V e F , sono dette costanti logiche. 1 Le espressioni logiche legali (quelle che rappresentano una espressione sintatticamente corretta) possono essere definite da un processo ricorsivo 1 . In particolare, una espressione logica è cosı̀ definita: BASE: Una variabile logica o una costante logica sono espressioni logiche; RICORSIONE: Siano E e F due espressioni logiche, allora sono espressioni logiche • ( not E); • (E and F ); • (E or F ). Tale definizione può esprimere qualsiasi formula logica. Gli operatori not , and e or possono essere combinati per formare una qualsiasi espressione logica! Una espressione complessa ha tipicamente bisogno di parentesi per indicare l’ordine di applicazione degli operatori. L’algebra della logica proposizionale (si tratta di un algebra di commutazione) prevede però delle precedenze di applicazione che sono: prima si applica l’operatore not , poi and e infine or (Per chiarezza nel seguito si utilizzeranno alcune parentesi anche quando non sarebbero necessarie). Una espressione del tipo A or not B and C equivale quindi a A or (( not B) and C). L’espressione (A or ( not B)) and C non rappresenta la stessa funzione della precedente. Come si può dimostrare questo fatto? Un metodo è quello di applicare l’induzione perfetta. Questa regola prevede che due formule sono equivalenti se esibiscono lo stesso valore di verità per qualsiasi valore di verità associato alle variabili che le costituiscono. Per verificare che due formule A e B sono equivalenti, si scrive A ≡ B, si devono quindi esaminare tutti i possibili valori di verità delle variabili costituenti A e B e controllare che i valori di verità delle proposizioni A e B coincidano in ogni circostanza. Questo viene fatto con le cosı̀ dette tabelle di verità 2 . Le tabelle di verità associano a ogni combinazione dei valori di verità delle variabili di una formula i valori di verità della formula stessa. Ad esempio, di seguito, sono illustrate le tabelle di verità relative agli operatori fondamentali della logica proposizionale. A B A and B A B A or B A not A F F F F F F F V F V F F V V F F V V V F V F V V V V V V 1 La definizione sopra data è appunto ricorsiva e definisce una grammatica, ovvero un insieme di regole per formare espressioni sintatticamente corrette! Lo stesso tipo di grammatiche, anche se più complesse, sono usate per definire le sintassi dei linguaggi di programmazione come il Fortran. Ogni costrutto del linguaggio è definito in base a regole di derivazione in modo rigidamente stabilito 2 Questa nomenclatura fu introdotta da Wittgenstein uno dei filosofi più influenti (anche se spesso poco apprezzato, del ’900. 2 Dimostriamo che A or (( not B) and C) e (A or ( not B)) and C non sono equivalenti. Scriviamo quindi le tabelle di verità delle due formule. A B C ( not B) and C A or (( not B) and C) F F F F F V V F F V F V F F F F F F V V V F F F V V F V V V V V F F V V V V F V A B C A or ( not B) (A or ( not B)) and C F F F V F V V F F V F V F F F F F F V V V F F V F V F V V V V V F V F V V V V V Come si può vedere, anche se l’ordinamento delle combinazioni più a sinistra è il medesimo, le colonne più a destra delle due tabelle non sono uguali. Si dimostra quindi che le due relazioni non sono equivalenti. Gli operatori and , or e not godono di alcune importanti proprietà: • Sono riflessivi: – A and B ≡ B and A, – A or B ≡ B or A; • Sono associativi: – A and B and C ≡ (A and B) and C ≡ A and (B and C), – A or B or C ≡ (A or B) or C ≡ A or (B or C); • Distributivi reciprocamente: – A and (B or C) ≡ (A and B) or (A and C), – A or (B and C) ≡ (A or B) and (A or C). • Leggi di De Morgan: – not (A and B) ≡ ( not A) or ( not B) – not (A or B) ≡ ( not A) and ( not B) • not not A ≡ A. 3 Dimostrate le precedenti relazioni con l’induzione perfetta! Queste relazioni definiscono un’algebra delle proposizioni, che viene detta algebra booleana (dal nome del logico George Boole (1815-1864)). Nell’algebra booleana or corrisponde a +, and a × e not a −. Controllando le tabelle di verità degli operatori elementari, si possono facilmente dimostrare che le seguenti relazioni sono sempre verificate: • A or V ≡ V ; • A and F ≡ F ; • A or F ≡ A; • A and V ≡ A; • A or A ≡ A (idempotenza); • A and A ≡ A (idempotenza); • A and not A ≡ F (complementarietà); • A or not A ≡ V (complementarietà). Torniamo alla espressione di inizio sezione: A or (( not A) and B). Questa espressione può essere semplificata sfruttando le proprietà appena descritte: A or (( not A) and B) ≡ (A or ( not A)) and (A or B) ≡ (A or B) dove sono state applicate la distributività di or rispetto a and , la complementarietà di or e A and V ≡ A. 2 Altri operatori Altri operatori possono essere definiti partendo dagli operatori principali. Di particolare importanza sono gli operatori binari xor , nand e → . Le tabelle di verità di A B A xor B A B A nand B A B A → B F F F F F V F F V V V V F V F V F V V F V V F V V F F V V F V V F V V V L’operatore xor è utilizzato, ad esempio, nei circuiti per eseguire la somma di due numeri binari (ne vedremo un esempio). La sua espressione in termini di operatori di base è la seguente: A xor B ≡ (( not A) and B) or (A and ( not B)) (Lo si verifichi!) 4 L’operatore nand ha una particolare importanza in quanto rende possibile realizzare tutte le funzioni logiche possibili con una circuiteria decisamente semplice. Basta in effetti dimostrare che, utilizzando solo l’operatore nand è possibile ottenere le tabelle di verità degli operatori not , or e and . Si ha infatti che: 1. not A = A nand A; 2. not (A nand B) = A and B; 3. ( not A) nand ( not B) = A or B. (Verificate con l’induzione perfetta!) I punti 2 e 3 sfruttano il fatto che la funzione not è già stata ottenuta da nand al punto 1. L’implicazione ha questo significato: A → B vuol dire che se è vero A allora deve essere vero B. La condizione A è falso e B è falso è perfettamente accettabile, come anche che B sia vero e che A sia falso e che A e B siano entrambi veri. Quello che non può accadere è che A sia vero e B sia falso. Vediamo un esempio: sia A un insieme contenuto nell’insieme B. Questo vuol dire che x ∈ A implica che x ∈ B. È del tutto lecito che esista un y ∈ B mentre y ∈ / A, e che esista z ∈ / Aez ∈ / B. L’unica cosa che non può accadere è che x∈Aex∈ / B. L’operatore → equivale a not A or B. Un altro operatore è ≡, detto anche se e solo se. La sua tabella di verità è A B A nand B F F V F V F F V F V V V Questo operatore riporta V quando entrambe i suoi operandi sono uguali. Dire che due formule sono equivalenti, come abbiamo fatto qui sopra, significa dire che (A ≡ B) ≡ V , per qualsiasi assegnazione dei valori di verità delle variabili si A e B. Si può verificare che (A ≡ B) ≡ ((A → B) and (B → A)). Esercizi: 1. Si dimostri, senza usare l’induzione perfetta (quindi con le regole algebriche) che (x or y) and y ≡ (x and y) or y. 2. Si dimostri, usando l’induzione perfetta (tabelle di verità) che (x or y) and y ≡ (x and y) or y. 3. A quale tra le seguenti espressioni equivale (x or not y) and y. Non si usi l’induzione perfetta. (a) (x or y) (b) (x and not y) (c) (x and y) 5 4. Si usi l’induzione perfetta per risolvere l’esercizio precedente. 5. Si dimostri se nand è commutativo. 6. Si dimostri che nand non è associativo. 7. Si fornisca l’espressione di → che utilizzi solo gli operatori and , or e not . 8. Quante funzioni (operatori) possono essere definiti con due operandi? Si ottengano le tabelle di verità per tutte le possibili funzioni di due operandi. Quante di queste sono commutative? 9. A quale tra le seguenti espressioni equivale (x and z) or (y and z) or (x and not z) or (y and not z) (a) x or z (b) z or y (c) x or y 10. A quale tra le seguenti espressioni equivale ( not x and not y) or ( not x and y) or (y and not z) or (x and not z) (a) z or ((x or not y) and z) (b) z or (( not x or y) and z) (c) z or (( not x or y) and ( not z)) 6