Booleano
True
Sintassi
true
Semantica
true è vero
False
Sintassi
false
Semantica
false è falso
Variabili
Sintassi
<NAME>
Semantica
x è una proposizione della quale non conosciamo il
valore: può essere vero o falso.
Negazione
Sintassi
¬ <BOOL>
Semantica
Se x è vero, ¬x è falso
Se x è falso, ¬x è vero
Esempi
¬true è falso
¬false è vero
¬(¬x) ha lo stesso valore di x
Congiunzione
Sintassi
<BOOL> ∧ <BOOL>
Semantica
Se x e y sono veri, x∧y è vero
Altrimenti x∧y è falso
x | y | x ∧ y |
falso | falso | falso |
falso | vero | falso |
vero | falso | falso |
vero | vero | vero |
Esempi
true∧x ha lo stesso valore di x
false∧x è falso
x∧x ha lo stesso valore di x
x∧¬x è falso
x∧y ha lo stesso valore di y∧x
Disgiunzione
Sintassi
<BOOL> ∨ <BOOL>
Semantica
Se x è vero o se y è vero, x∨y è vero
Altrimenti x∨y è falso.
x | y | x ∨ y |
falso | falso | falso |
falso | vero | vero |
vero | falso | vero |
vero | vero | vero |
Una disgiunzione non indica necessariamente un'alternativa.
Semantica equivalente
Se x e y sono falsi, x∨y è falso
Altrimenti x∨y è vero.
Esempi
false∨x ha lo stesso valore di x
true∨x è vero
false∨x ha lo stesso valore di x
x∨x ha lo stesso valore di x
x∨¬x è vero
x∨y ha lo stesso valore di y∨x
Implicazione
Sintassi
<BOOL> ⇒ <BOOL>
Semantica
Se y è vero, x⇒y è vero;
Se x è falso e y è falso, x⇒y è vero;
Se x è vero e y è falso, x⇒y è falso.
x | y | x ⇒ y |
falso | falso | vero |
falso | vero | vero |
vero | falso | falso |
vero | vero | vero |
Una implicazione non indica necessariamente una causalità.
Semantica equivalente
Se x è vero e y è falso, x⇒y è falso;
Altrimenti x⇒y è vero.
Esempi
false⇒x è vero
true⇒x ha lo stesso valore di x
x⇒true è vero
x⇒false ha lo stesso valore di ¬x
x⇒x è vero
x⇒¬x ha lo stesso valore di ¬x
x⇒y ha lo stesso valore di (¬y)⇒¬x
Equivalenza
Sintassi
<BOOL> ≡ <BOOL>
Semantica
Se x ha lo stesso valore di y, x≡y è vero;
Altrimenti x≡y è falso.
x | y | x ≡ y |
falso | falso | vero |
falso | vero | falso |
vero | falso | falso |
vero | vero | vero |
Esempi
false≡x ha lo stesso valore di ¬x
true≡x ha lo stesso valore di x
x≡x è vero
x≡¬x è falso
x≡y ha lo stesso valore di y≡x
Esercizi
A1
Scrivere in Caml un tipo di dato boolean che definisce le formule booleane.
A2
Scrivere una funzione string_of_boolean che trasforma una formula booleana in una stringa.
Altri operatori
Operatori binari
1
x | y | x ? y |
falso | falso | falso |
falso | vero | falso |
vero | falso | falso |
vero | vero | falso |
|
2
x | y | x ? y |
falso | falso | falso |
falso | vero | falso |
vero | falso | falso |
vero | vero | vero |
|
3
x | y | x ? y |
falso | falso | falso |
falso | vero | falso |
vero | falso | vero |
vero | vero | falso |
|
4
x | y | x ? y |
falso | falso | falso |
falso | vero | falso |
vero | falso | vero |
vero | vero | vero |
|
5
x | y | x ? y |
falso | falso | falso |
falso | vero | vero |
vero | falso | falso |
vero | vero | falso |
|
6
x | y | x ? y |
falso | falso | falso |
falso | vero | vero |
vero | falso | falso |
vero | vero | vero |
|
7
x | y | x ? y |
falso | falso | falso |
falso | vero | vero |
vero | falso | vero |
vero | vero | falso |
|
8
x | y | x ? y |
falso | falso | falso |
falso | vero | vero |
vero | falso | vero |
vero | vero | vero |
|
9
x | y | x ? y |
falso | falso | vero |
falso | vero | falso |
vero | falso | falso |
vero | vero | falso |
|
10
x | y | x ? y |
falso | falso | vero |
falso | vero | falso |
vero | falso | falso |
vero | vero | vero |
|
11
x | y | x ? y |
falso | falso | vero |
falso | vero | falso |
vero | falso | vero |
vero | vero | falso |
|
12
x | y | x ? y |
falso | falso | vero |
falso | vero | falso |
vero | falso | vero |
vero | vero | vero |
|
13
x | y | x ? y |
falso | falso | vero |
falso | vero | vero |
vero | falso | falso |
vero | vero | falso |
|
14
x | y | x ? y |
falso | falso | vero |
falso | vero | vero |
vero | falso | falso |
vero | vero | vero |
|
15
x | y | x ? y |
falso | falso | vero |
falso | vero | vero |
vero | falso | vero |
vero | vero | falso |
|
16
x | y | x ? y |
falso | falso | vero |
falso | vero | vero |
vero | falso | vero |
vero | vero | vero |
|
1: false
2: x ∧ y
3: x ∧ ¬y
4: x
5: ¬x ∧ y
6: y
7: (x ∧ ¬y) ∨ (¬x ∧ y) = x xor y = ¬(x ≡ y)
8: x ∨ y
9: ¬x ∧ ¬y = ¬(x ∨ y)
10: (¬x ∧ ¬ y) ∨ (x ∧ y) = ¬(x xor y) = x ≡ y
11: ¬y
12: x ∨ ¬y = y ⇒ x
13: ¬x
14: ¬x ∨ y = x ⇒ y
15: ¬(x ∧ y) = x ⇒ ¬y = ¬x ⇒ y
16: true
Operatori n-ari
Sia un operatore f che prende n variabili x1, x2,...xn.
Mostriamo per induzione che si può esprimere questo operatore con ¬,
∧, ⇒, true e false.
-
Caso di base:
-
Se n=0, il tale caso f è vero o falso.
-
Caso d'induzione:
-
si può scrivere f(x1,x2,...,xn) come
(x1 ⇒ f(true,x2,...,xn)) ∧(¬x1 ⇒ f(false,x2,...,xn)):
-
Se x1 è vero, abbiamo
(true ⇒ f(true,x2,...,xn)) ∧ (¬true ⇒ f(false,x2,...,xn))
equivalente a
f(true,x2,...,xn) ∧ true
equivalente a
f(true,x2,...,xn))
-
Se x1 è falso, abbiamo
(falso ⇒ f(true,x2,...,xn)) ∧ (¬false ⇒ f(false,x2,...,xn))
equivalente a
true ∧ f(false,x2,...,xn)
equivalente a
f(false,x2,...,xn))
f(true,x2,...,xn)) e f(false,x2,...,xn)) sono operatori che prendono
n-1 variabili.
Dunque con l'ipotesa d'induzione si possono scrivere
con ¬,∧, ⇒, true and false.
Dunque anche f(x1,x2,...,xn).
Esempio:
x1 | x2 | x3 | f(x1,x2,x3) |
falso | falso | falso | vero |
falso | falso | vero | vero |
falso | vero | falso | falso |
falso | vero | vero | vero |
vero | falso | falso | vero |
vero | falso | vero | falso |
vero | vero | falso | falso |
vero | vero | vero | vero |
Abbiamo f(x1,x2,..,xn) equivalente
(x1 ⇒ f1(x2,...,xn)) ∧(¬x1 ⇒ f2(x2,...,xn))
dove
x2 | x3 | f1(x2,x3) | f2(x2,x3) |
falso | falso | vero | vero |
falso | vero | falso | vero |
vero | falso | falso | falso |
vero | vero | vero | vero |
Abbiamo f(x1,x2,x3) equivalente
(x1 ⇒ ((x2 ⇒ f3(x3)) ∧(¬x2 ⇒ f4(x3))))
∧(¬x1 ⇒ ((x2 ⇒ f5(x3)) ∧(¬x1 ⇒ f6(x3))))
dove
x3 | f3(x2,x3) | f4(x2,x3) | f5(x2,x3) | f6(x2,x3) |
falso | falso | vero | falso | vero |
vero | vero | falso | vero | vero |
Abbiamo f(x1,x2,x3) equivalente
(x1 ⇒ ((x2 ⇒ x3)) ∧(¬x2 ⇒ ¬x3)))
∧(¬x1 ⇒ ((x2 ⇒ x3) ∧(¬x1 ⇒ true)))
Conclusioni
Gli operatori che abbiamo sono sufficienti.
Possiamo avere solo ¬, ∧ e ∨.
Anche ¬, ∧ sono sufficienti perché a∨b
si può scrivere ¬(¬a∧¬b).
Anche ¬, ∨ sono sufficienti perché a∧b
si può scrivere ¬(¬a∨¬b).
Anche ¬, ⇒ sono sufficienti perché a∧b si può scrivere ¬(a⇒¬b) e
a∨b si può scrivere ¬a⇒b.
Valutazione
Tabella di verità
Formula f: ((x∧y)∨z)⇒(z⇒(x∧y))
Variabili: x, y e z
Sottoformule:
f1: | x∧y |
f2: | f1∨z |
f3: | z⇒f1 |
f: | f2⇒f3 |
x | y | z | f1 | f2 | f3 | f |
falso | falso | falso | falso | falso | vero | vero |
falso | falso | vero | falso | vero | falso | falso |
falso | vero | falso | falso | falso | vero | vero |
falso | vero | vero | falso | vero | falso | falso |
vero | falso | falso | falso | falso | vero | vero |
vero | falso | vero | falso | vero | falso | falso |
vero | vero | falso | vero | vero | vero | vero |
vero | vero | vero | vero | vero | vero | vero |
Esercizi
A3
Scrivere una funzione eval che prende una formula e una
valutazione delle variabili e restituisce il valore della formula
per questa valutazione.
A4
Scrivere una funzione table che prende una formula e scrive la sua tabella di verità.
Soddisfacibilità
Definizione
Una formula è soddisfacibile se esiste una valutazione delle
variabili che la rende vera.
Esempi
((x∧y)∨z)⇒(z⇒(x∧y)) è soddisfacibile.
x ∧¬x non è soddisfacibile.
Esercizi
A5
Scrivere una funzione sat che verifica se una formula è
soddisfacibile.
Tautologia
Definizione
Una formula è una tautologia se tutte le valutazioni delle
variabili la rendono vera.
Tautologia e Soddisfacibilità
f è una tautologia se e solamente se ¬f non è
soddisfacibile.
Esempi
(x∧y)⇒(y∧x) è una tautologia.
((x∧y)∨z)⇒(z⇒(x∧y)) non è una tautologia.
Esercizi
A6
Scrivere una funzione taut che verifica se una formula è
una tautologia.
*A7
Dare una valutazione delle variabili che rende la formula x⇒ (y ⇒ x) vera.
*A8
Dare una valutazione delle variabili che rende la formula x⇒ (y ⇒ x) falsa.
*A9
Dare una valutazione delle variabili che rende la formula ¬y⇒ (x ∧ y) vera.
*A10
Dare una valutazione delle variabili che rende la formula ¬y⇒ (x ∧ y) falsa.
*A11
Dare una valutazione delle variabili che rende la formula ((x⇒ y) ⇒ x) ⇒ x vera.
*A12
Dare una valutazione delle variabili che rende la formula ((x⇒ y) ⇒ x) ⇒ x falsa.
*A13
Dare la tabella di verità per la formula (x∨ ¬y) ⇒ (x ∧ y).
Laurent Théry
Last modified: Thu May 9 01:05:50 MEST 2002