La Logica Proposizionale (Algebra di Boole)

1
ISTITUTO DI ISTRUZIONE SUPERIORE “ANGIOY”
La Logica Proposizionale
(Algebra di Boole)
Prof. G. Ciaschetti
1. Cenni storici
Sin dagli antichi greci, la logica è intesa come lo studio del logos, che in greco significa parola,
verbo, o ragione. O anche studio, si pensi a parole come ecologia, psicologia, ecc. La logica, quindi,
storicamente, si è occupata dello studio della parola, cioè lo studio delle strutture e delle regole del
discorso, allo scopo di comprendere, e utilizzare a proprio vantaggio, come ottenere conclusioni
“convincenti” a partire da determinate premesse.
Ancora oggi, a pensarci bene, organizzare un discorso che sia logicamente convincente è
fondamentale in diverse discipline:
 Matematica: esibire la dimostrazione matematica di un risultato (teorema, lemma, postulato)
significa fare vedere come, a partire dalle ipotesi, valga una serie di ragionamenti logici che
portano via via a nuove conclusioni, fino ad arrivare alla tesi che si vuole dimostrare.
 Giurisprudenza: un avvocato, in un aula di tribunale, nel difendere il proprio assistito cerca
di convincere la corte che i fatti si siano svolti in un determinato modo, e farà questo –
partendo da alcune premesse – nel modo logicamente più convincente possibile.
 Filosofia: un filosofo è più convincente di altri filosofi nel proporre l’esattezza delle proprie
argomentazioni se i suoi ragionamenti sono più “logicamente” corretti.
Dagli esempi esposti, si capisce che c’è un modo di ragionare logico, che è comunemente accettato
come corretto, grazie al quale è possibile convincere gli altri di conclusioni non immediatamente
verificabili. Come dicevamo, già dall’antichità la logica è stata oggetto di studio, in quanto chi
riusciva a essere più “logico” degli altri nei propri discorsi era anche colui che vinceva le dispute
verbali.
Riportiamo in questo paragrafo alcuni personaggi e i loro contributi fondamentali allo studio della
logica, che hanno costituito le basi per la logica moderna, attualmente usata nei calcolatori
elettronici:
 Aristotele (circa 350 A.C.)
 Principio di non contraddizione: una cosa e il suo contrario non possono essere
contemporaneamente vere (es. le frasi “il prof. di informatica è biondo” e il
“prof. di informatica non è biondo” non possono essere entrambe vere)
 Principio del terzo escluso: o è vera una cosa, o è vero il suo contrario, non può
esserci una terza possibilità (es. “il prof. di informatica è biondo” oppure “il
2
prof. di informatica non è biondo”: una delle due deve essere vera e non c’è
una terza possibilità).
 Sillogismi: “Tutti gli uomini sono mortali”, “Socrate è un uomo”, quindi
“Socrate è mortale”.
 Crisippo (circa 250 A.C.)
 È possibile raggiungere nuove conoscenze attraverso la logica (come ad
esempio, nelle dimostrazioni matematiche).
 Regole di deduzione logica e studio dei connettivi logici, come il modus
ponens (se ogni volta che si verifica A si verifica B, e si è verificato A, allora si
è verificato anche B) o il modus tollens (se ogni volta che si verifica A si
verifica B, e non si è verificato B, allora non si è verificato A).
 Boole (1850 D.C. circa)
 Uso dei simboli 0 e 1 per indicare il “falso” e il “vero” (da qui, l’utilizzo
automatizzato della logica per mezzo dei calcolatori).
 Costruzione di un algebra delle proposizioni, da questo momento in poi nota
come Algebra di Boole.
 Uso delle tavole di verità per dimostrare la falsità o la veridicità di espressioni
logiche.
2. Algebra di Boole
In generale, per definire un’algebra occorre specificare quali sono i suoi termini, le sue operazioni,
le regole di precedenza tra le operazioni, le diverse proprietà di cui godono le operazioni, e come si
costruiscono e si valutano le espressioni.
Prima di cominciare a definire l’Algebra di Boole, anche facendo un confronto con l’algebra
aritmetica che abbiamo conosciuto finora in matematica, ci occorrono alcune definizioni:
Definizione: Una proposizione è una frase di senso compiuto
Ad esempio, le frasi “fuori c’è bel tempo” e “oggi non mi va di studiare” sono proposizioni, mentre
non è una proposizione la frase “bello cane io faccio tempo male” oppure la frase “cosa però voglio
non”.
Definizione: Un enunciato è una proposizione della quale si può stabilire con certezza se è vera o
falsa.
Ad esempio, la frase “l’Istituto Angioy è a Carbonia” è una proposizione vera, quindi è un
enunciato; la frase “l’Istituto Angioy è a Roma” è una proposizione falsa, quindi è un enunciato; la
frase “informatica è una brutta materia” non è un enunciato, perché pur essendo una proposizione,
non si può dire che sia sempre vera (a qualcuno non piace) o sempre falsa (a qualcuno piace). Allo
stesso modo la frase “che bel tempo c’è” non è un enunciato, perché a qualcuno potrebbe piacere il
sole mentre a qualcun altro la pioggia.
Torniamo alla definizione della nostra Algebra di Boole. Andiamo a specificare, quindi, chi sono i
termini, le operazioni, le regole di precedenza tra le operazioni e le regole di costruzione e
3
valutazione delle espressioni, confrontandoci con l’algebra aritmetica. Alle proprietà dell’Algebra
di Boole dedicheremo, successivamente, un paragrafo a parte.
termini: se i termini dell’aritmetica sono i numeri, i termini dell’algebra booleana sono gli
enunciati, che possono essere rappresentati con 0 (enunciato falso) e 1 (enunciato vero). Così come
in aritmetica, possiamo trovare termini costanti, cioè di cui conosciamo il valore, oppure termini
variabili, che indicheremo con lettere come x, y, z, ecc.
operazioni: mentre nell’aritmetica abbiamo le operazioni di addizione, sottrazione, moltiplicazione
e divisione, (quelle che indichiamo con i simboli +, *, - e /), nell’algebra booleana abbiamo le
operazioni fondamentali AND, OR, NOT, e poi altre operazioni che vedremo successivamente.
- L’operazione AND è detta di congiunzione o prodotto logico, e può essere rappresentata con
i simboli ∙ oppure ˄ (noi useremo il primo dei due).
- L’operazione OR è detta di disgiunzione o somma logica e può essere rappresentata con i
simboli + oppure ˅ (noi useremo il primo dei due).
- L’operazione NOT è detta negazione logica, e può essere rappresentata con i simboli
oppure ┌ (noi useremo il primo dei due).
Torneremo sulle operazioni (queste tre e altre) più tardi, esaminando attentamente come funzionano
e il loro significato. Per il momento, ci basti dire che il NOT è un’operazione unaria (si applica a un
solo operando) mente l’AND, l’OR e le altre operazioni che studieremo sono operazioni binarie (si
applicano a due operandi – come la somma, la sottrazione, ecc.).
precedenze: se in aritmetica le operazioni di moltiplicazione e divisione hanno la precedenza su
quelle di addizione e sottrazione, nell’algebra booleana esiste una sola regola: le operazioni unarie
hanno la precedenza su quelle binarie, ossia, il NOT ha la precedenza su tutte le altre operazioni.
Così come in aritmetica, per “forzare” le precedenze ad essere diverse da quelle naturali, si possono
usare le parentesi. Nell’algebra booleana, inoltre, l’uso delle parentesi è necessario ogni qual volta
non è ben determinata la precedenza tra due o più operazioni.
ESEMPI:
corrisponde a (NOT (x)) OR y. Siccome il NOT ha la precedenza sull’OR, non c’è
bisogno di parentesi
corrisponde a NOT(x OR y). Per forzare le precedenze ed effettuare prima l’OR,
abbiamo bisogno di parentesi.
l’espressione non è ben specificata, in quanto l’OR e l’AND hanno stessa
precedenza, e non sappiamo quale applicare prima. Andrebbero messe delle
parentesi.
espressioni: la valutazione di un’espressione in aritmetica dà come risultato un numero, che può
essere noto se l’espressione contiene solo termini costanti, o incognito se ci sono delle variabili.
Anche nell’algebra booleana si può valutare un’espressione, il cui risultato è noto se compaiono
solo termini costanti, e può essere 0 oppure 1.
Nella seguente figura, è riassunta la differenza tra l’algebra aritmetica e quella booleana:
4
3. Le operazioni binarie fondamentali
Torniamo alle tre operazioni booleana fondamentali, il NOT, l’AND e l’OR, ed esaminiamole più a
fondo:
3.1 L’operazione NOT
L’operazione NOT (dall’inglese non) è detta negazione logica, e serve a negare una proposizione. Il
risultato è trasformare una proposizione vera in falsa, e viceversa, una falsa in vera. Ad esempio, se
diciamo “ad agosto fa caldo”, che è una proposizione vera, e neghiamo quanto detto, otteniamo “ad
agosto non fa caldo”, che è una proposizione falsa. Ad esempio, se diciamo “Milano è a sud di
Carbonia”, proposizione falsa, e la neghiamo, otteniamo “Milano non è a sud di Carbonia”, che è
una proposizione vera. Indichiamo l’operazione NOT con il simbolo .
In generale, data una proposizione x, essa può essere falsa o vera: se è vera,
falsa, è vera. Si può riassumere quanto detto nella seguente tabella:
è falsa, mentre se è
x
0 1
1 0
La tabella può anche letta “per righe” in questo modo: risulta
3.2 L’operazione AND
L’operazione AND (dall’inglese e) è detta congiunzione o prodotto logico, e serve a congiungere
tra loro due proposizioni. Un’espressione formata con l’operazione AND tra due proposizioni sarà
vera se la prima proposizione è vera e la seconda proposizione è vera. Ad esempio, se diciamo “c’è
una sola cattedra in ogni aula” (proposizione vera) AND “un banco è più piccolo di una cattedra”
(proposizione vera), l’intera frase sarà vera. Se invece diciamo “ci sono due cattedre in ogni aula”
(proposizione falsa) AND “c’è un registro per ogni classe” (proposizione vera), poiché abbiamo
detto almeno una falsità, la nostra frase complessiva sarà falsa. Indichiamo l’AND con il simbolo
In generale, date due proposizioni x e y, l’espressione x y sarà vera solo se entrambe x e y sono vere.
Si può riassumere quanto detto nella seguente tabella:
x
0
0
1
1
y
0
1
0
1
xy
0
0
0
1
3.3 L’operazione OR
L’operazione OR (dall’inglese o) è detta disgiunzione o somma logica, e serve a disgiungere tra
loro due proposizioni. Un’espressione formata con l’operazione OR tra due proposizioni sarà vera
se la prima proposizione è vera o la seconda proposizione è vera. Cioè, se almeno una delle due è
vera. Ad esempio, se diciamo “c’è una sola cattedra in ogni aula” (proposizione vera) OR “un banco
è più piccolo di una cattedra” (proposizione vera), l’intera frase sarà vera. Se invece diciamo “ci
sono due cattedre in ogni aula” (proposizione falsa) OR “c’è un registro per ogni classe”
5
(proposizione vera), poiché abbiamo detto almeno una cosa vera, la nostra frase complessiva sarà
vera (l’una o l’altra delle due è vera). Ad esempio, ancora, se diciamo “ci sono tre cattedre in ogni
aula” (proposizione falsa) OR “il prof. di informatica è più giovane dei suoi alunni” (proposizione
falsa), poiché nessuna delle due è vera, abbiamo detto una frase falsa. Indichiamo l’OR con il
simbolo +.
In generale, date due proposizioni x e y, l’espressione x y sarà vera solo se almeno una tra x e y è
vera. Si può riassumere quanto detto nella seguente tabella:
x
0
0
1
1
y
0
1
0
1
x
y
0
1
1
1
4. Espressioni booleane
Come abbiamo detto, è possibile costruire espressioni booleane mettendo insieme termini e
operazioni, stando ben attenti a indicare correttamente le precedenze tra le diverse operazioni.
Abbiamo anche detto che l’operazione NOT (operazione unaria) ha la precedenza su tutte le altre
operazioni (operazioni binarie), e che per “forzare” precedenze diverse occorre usare le parentesi.
Infine, ricordiamo che l’uso di parentesi è reso necessario ogni qual volta la precedenza tra
operazioni non è ben specificata (ad esempio tra OR e AND).
Per evitare l’uso eccessivo di parentesi, che appesantirebbero eccessivamente la scrittura, adottiamo
le seguenti convenzioni:
xy
xy+z
corrisponde a x y
corrisponde a (x y) + z
corrisponde a (NOT (x)) OR y.
corrisponde a NOT(x OR y).
Ad esempio, nell’espressione
si applicheranno, nell’ordine, le operazioni NOT (y), poi (x
AND NOT(y)), e infine (x AND NOT(y)) OR z.
Calcolare un’espressione booleana, come vedremo nel prossimo paragrafo, significa applicare in
sequenza tutte le operazioni che in essa compaiono, per vedere “quanto fa”. A differenza di
un’espressione matematica, il cui calcolo dà un numero, il calcolo di un’espressione booleana dà
come risultato vero (cioè 1) o falso (cioè 0).
5. Analisi di espressioni booleane: le tavole di verità
Andando a calcolare un’espressione booleana, se essa contiene solo termini costanti, allora il
risultato sarà un termine dell’algebra booleana, cioè un enunciato, cioè sarà 0 (falso) oppure 1
(vero).
ESEMPIO:
Il valore dell’espressione (1 0) + (1 + ( )) è pari a: (1 0) + (1 + ) = 0 + 1 = 1
ESEMPIO:
Il valore dell’espressione 1
=10=0
6
Tuttavia, quando nell’espressione sono presenti termini variabili (cioè, il cui valore non è ancora
determinato, potrebbe essere sia 0 che 1), non è possibile calcolare l’espressione. In questo caso,
occorre effettuare un’analisi dell’espressione booleana, andando a individuare per quali valori delle
variabili l’espressione è vera o falsa. E’ possibile fare questo per mezzo delle tavole di verità.
Si tratta di calcolare l’espressione applicando gli operatori nell’ordine giusto, e andare a vedere
quanto è il risultato per ogni possibile combinazione delle variabili presenti. Con qualche esempio
sarà tutto più chiaro:
ESEMPIO: analizziamo l’espressione
elenchiamo le diverse combinazioni delle variabili che compaiono nell’espressione, cioè x e y, e
applichiamo nell’ordine le diverse operazioni, per ognuna delle combinazioni:
x
0
0
1
1
y
0
1
0
1
x+y
0
1
1
1
1
0
0
0
xy
0
0
0
1
1
0
0
1
Cosa abbiamo fatto? Riepiloghiamo: per la prima combinazione, x=0 e y=0, abbiamo calcolato x+y,
cioè 0+0, che fa 0. Poi abbiamo calcolato
, cioè = 1. A questo punto, abbiamo calcolato xy,
cioè 0 0, il cui risultato è 0. Quindi, abbiamo fatto l’operazione OR tra
e
, ossia tra 1 e 0,
e abbiamo ottenuto 1 come risultato.
Ripetendo il procedimento per ogni altra possibile combinazione delle variabili x e y, cioè per ogni
altra riga della tavola di verità, abbiamo trovato per quali valori di x e y l’espressione è vera
(nell’ultima colonna): in questo esempio, quando x e y sono entrambi 0 o entrambi 1.
Un modo più rapido per sviluppare la tavola di verità è di guardarla “per colonne”: facciamo vedere
come, in un altro esempio:
ESEMPIO: analizziamo l’espressione
di nuovo, elenchiamo le diverse combinazioni delle variabili e calcoliamo il risultato
dell’espressione, applicando nell’ordine gli operatori, per ogni diversa combinazione;
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
l’operazione che ha la precedenza è il NOT, quindi cerchiamo innanzitutto
relativa alla x.
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
: neghiamo la colonna
1
1
1
1
0
0
0
0
ora, possiamo calcolare
applicando l’operazione OR alle colonne relative a
e z.
7
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
1
1
1
1
0
1
0
1
dopo di che, neghiamo quanto abbiamo ottenuto, e abbiamo così il termine
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
1
0
1
0
ora dobbiamo calcolare il termine tra parentesi tonde: calcoliamo prima
l’abbiamo già) negando la colonna della y
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
1
0
1
0
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
1
0
1
0
ce
1
1
0
0
1
1
0
0
applicando l’operazione OR tra le colonne
e quindi il termine
x
0
0
0
0
1
1
1
1
(la colonna relativa a
1
1
0
0
1
1
0
0
e
1
1
1
1
1
1
0
0
Per trovare il nostro risultato, a questo punto, non resta che applicare l’operazione AND alle
colonne relative ai termini
e
x
0
0
0
0
1
1
1
1
y
0
0
1
1
0
0
1
1
z
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
1
1
1
1
0
0
0
0
0
0
1
0
0
0
Nei nostri esercizi, useremo anche scrivere una espressione booleana come una formula del tipo
y = f(x1, x2, …, xN) dove x1, x2, …, xN sono le variabili indipendenti e y è il valore dell’espressione.
ESEMPIO: y =
8
6. Proprietà dell’Algebra di Boole
Come l’aritmetica, anche l’Algebra di Boole gode di alcune proprietà. Prima di vedere quali,
diciamo che è possibile dimostrare l’uguaglianza tra due espressioni booleane utilizzando le tavole
di verità, nel seguente modo: se la tavola di verità dell’espressione a sinistra del simbolo = è uguale
a quella dell’espressione a destra, allora le due espressioni sono uguali.
ESEMPIO:
=
DIMOSTRAZIONE:
x1 x2
0 0
0 1
1 0
1 1
1
1
0
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
1
poiché le due colonne sono uguali,
l’uguaglianza delle espressioni è verificata!
Elenchiamo ora le principali proprietà dell’Algebra di Boole, dimostrandone alcune con le tavole di
verità, e lasciando per esercizio la dimostrazione delle altre.
a)
proprietà commutativa:
x+y=y+x
xy = yx
infatti, risulta
x
0
0
1
1
b)
proprietà associativa:
y x+y y+x
0 0 0
1 1 1
0 1 1
1 1
1
x
0
0
1
1
y xy yx
0 0 0
1 0 0
0 0 0
1 1 1
x + (y + z) = (x + y) + z
x(yz) = (xy)z
si lascia per esercizio la dimostrazione dell’uguaglianza con le tavole di verità.
c)
proprietà distributiva:
x + (yz) = (x + y)(x + z)
x(y + z) = xy + xz
si lascia per esercizio la dimostrazione.
9
d)
identità:
x+0=x
x1=x
si lascia per esercizio la dimostrazione.
e)
complementarità
x+
x
=1
=0
si lascia per esercizio la dimostrazione.
f)
idempotenza
x+x=x
xx=x
si lascia per esercizio la dimostrazione.
g)
dominanza:
x0=0
x+1=1
si lascia per esercizio la dimostrazione.
h)
involuzione (doppia negazione)
si lascia per esercizio la dimostrazione.
i)
De Morgan
si lascia per esercizio la dimostrazione.
10
7. Altri operatori booleani
Oltre alle tre operazioni fondamentali che abbiamo visto, cioè AND, OR e NOT, ci sono altre tre
operazioni che possiamo usare:
7.1 L’operazione XOR (o EX-OR)
Il nome viene dall’inglese EXclusive OR, cioè OR esclusivo. Funziona all’incirca come l’OR, ma è
esclusivo perché vieta la possibilità che i due operandi possano essere entrambi veri, uno esclude
l’altro. Quindi, se l’operazione OR corrisponde alla frase “la frase è vera se almeno una delle due è
vera”, l’operazione XOR corrisponde alla frase “la frase è vera se solo una delle due è vera”.
Si indica con il simbolo .
x y
0 0
0 1
1 0
1 1
x
y
0
1
1
0
L’operazione XOR non è una delle operazioni fondamentali, e può essere anche ottenuta usando
solo le tre operazioni fondamentali. Infatti risulta:
x
dimostriamolo:
x y x y
0 0
0
0 1
1
1 0
1
1 1
0
1
1
0
0
0
1
0
0
1
0
1
0
0
0
1
0
y=
0
1
1
0
7.1 L’operazione NAND
Letteralmente, è la negazione dell’operazione AND. Il simbolo utilizzato è | .
x y x|y x
0 0
1
0
1
0 1
1
0
1
1 0
1
0
1
1 1
0
1
0
7.1 L’operazione NOR
Letteralmente, è la negazione dell’operazione OR. Il simbolo utilizzato è ↓ .
x
0
0
1
1
y
0
1
0
1
x ↓ y x+
1
0
0
1
0
1
0
1
1
0
0
0
11
8. Insiemi di operatori funzionalmente completi
Abbiamo visto finora sei operatori booleani: AND, OR, NOT, XOR, NAND, NOR. Abbiamo anche
visto, però, che solo tre di essi sono quelli “fondamentali”, e cioè NOT, AND e OR. Infatti
possiamo ricavare gli altri tre a partire da questi:
x
y=
x|y=
x↓y =
Possiamo dire allora che l’insieme di operatori che comprende i soli operatori NOT, AND e OR,
cioè l’insieme { , , + } è un insieme funzionalmente completo.
Definizione: un insieme di operatori booleani si dice funzionalmente completo quando è possibile,
usando solo questi, “riprodurre” tutti gli altri operatori, cioè ottenere un’espressione che si comporta
come ognuno degli altri operatori che non fanno parte dell’insieme.
Ci chiediamo se { , , + } è il più piccolo insieme di operatori funzionalmente completo, oppure
se c’è qualche altro insieme di operatori, che ne ha solo 2, che è funzionalmente completo.
La risposta è si, esistono insieme di operatori funzionalmente completi con solo 2 operatori!
-
L’insieme che comprende i soli operatori NOT e AND, cioè l’insieme { , } è funzionalmente
completo.
Per dimostrare quanto appena detto, dobbiamo far vedere che possiamo “riprodurre” ogni
altro operatore booleano usando i soli operatori NOT e AND. Tuttavia, non è necessario far
vedere che possiamo riprodurre tutti gli operatori: essendo { , , +} funzionalmente
completo (l’abbiamo visto all’inizio del paragrafo), basta far vedere che possiamo riprodurre
l’operazione OR usando solo le operazioni NOT e AND. Se riusciamo con questi due a fare
anche l’OR, allora siamo in grado di fare anche tutti gli altri.
Risulta:
x+y
=
la prima uguaglianza vale per la proprietà dell’involuzione, la seconda per la proprietà di De
Morgan.
-
L’insieme che comprende i soli operatori NOT e OR, cioè l’insieme { , } è funzionalmente
completo.
Per dimostrare quanto appena detto, dobbiamo far vedere che possiamo “riprodurre” ogni
altro operatore booleano usando i soli operatori NOT e OR. Tuttavia, come prima, non è
necessario far vedere che possiamo riprodurre tutti gli operatori: essendo { , , +}
funzionalmente completo (l’abbiamo visto all’inizio del paragrafo), basta far vedere che
possiamo riprodurre l’operazione AND usando solo le operazioni NOT e OR. Se riusciamo
con questi due a fare anche l’AND, allora siamo in grado di fare anche tutti gli altri.
Risulta:
xy =
12
la prima uguaglianza vale per la proprietà dell’involuzione, la seconda per la proprietà di De
Morgan.
Ci chiediamo ora se esistono insiemi di operatori funzionalmente completi ancora più piccoli: cioè,
con un solo operatore, è possibile fare tutti gli altri?
La risposta è si, esistono insieme di operatori funzionalmente completi con solo 1 operatore!
-
L’insieme che comprende il solo operatore NAND, cioè l’insieme { | } è funzionalmente
completo.
Per dimostrare questo, dobbiamo far vedere che possiamo “riprodurre” ogni altro operatore
booleano usando il solo operatore NAND. Come prima, non è necessario far vedere che
possiamo riprodurre tutti gli operatori, ma basta ricondursi a un altro insieme di operatori
funzionalmente completo.
Essendo { , } funzionalmente completo, basta far vedere che possiamo riprodurre
l’operazione AND e l’operazione NOT usando la sola operazione NAND. Risulta:
=x |x
xy = (x | x) | (x | x)
la dimostrazione è lasciata per esercizio.
-
L’insieme che comprende il solo operatore NOR, cioè l’insieme { ↓ } è funzionalmente
completo.
Per dimostrare questo, dobbiamo far vedere che possiamo “riprodurre” ogni altro operatore
booleano usando il solo operatore NOR. Come prima, non è necessario far vedere che
possiamo riprodurre tutti gli operatori, ma basta ricondursi a un altro insieme di operatori
funzionalmente completo.
Essendo { , } funzionalmente completo, basta far vedere che possiamo riprodurre
l’operazione OR e l’operazione NOT usando la sola operazione NOR. Risulta:
=x ↓ x
x+y
= (x ↓ x) ↓ (x ↓ x)
la dimostrazione è lasciata per esercizio.
Concludiamo il paragrafo con un’ultima osservazione: perché siamo interessati a trovare insiemi di
operatori funzionalmente completi che siano più piccoli possibile? Il motivo sta nell’interesse di chi
realizza circuiti elettronici per i microprocessori: un microprocessore ha al suo interno diversi
circuiti logici combinatori (li studieremo nella prossima dispensa), i quali sono costituiti da porte
logiche, componenti elettronici che realizzano elettricamente le operazioni AND, OR, NOT, ecc.
Ora, per un produttore costa molto di più realizzare diversi tipi di porte logiche (una per
l’operazione AND, una per l’operazione OR, una per l’operazione NOT, e così via…) piuttosto che
un solo tipo. Infatti, in molti moderni microprocessori si trova, di fatto, un solo componente: quello
che realizza l’operazione NAND oppure quello che realizza l’operazione NOR.