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