Operatori logici
Nei linguaggi di programmazione (e nei fogli elettronici e in altre applicazioni) a
partire da una o più condizioni
nel linguaggio comune il significato di queste congiunzioni (e degli and, or e not usati nella lingua comune inglese)
dipende dal contesto
P | Q | NOT P | P AND Q | P OR Q | P XOR Q | |
V V F F |
V F V F |
F F V V |
V F F F |
V V V F |
F V V F |
Per questo motivo, quando si vogliono
evitare ambiguità, si può ricorrere agli operatori logici (chiamati pure connettivi)
anche nell'usuale linguaggio matematico (per qualche esempio
figure 1).
Spesso essi vengono rappresentati con altri simboli:
si veda la figura a lato (quelli in rosso sono i più usati). Nel software R vengono
usati !, & e | al posto di NOT, AND e OR;
viene usato |
Esistono anche altri operatori logici. Tutti sono comunque ricostruibili a partire da un piccolo insieme di essi. Ad esempio
posso costruire tutti gli altri operatori logici usando AND e NOT; in particolare P OR Q equivale a NOT((NOT P) AND (NOT Q)).
Vedi strutture numeriche non per approfondimenti e
qui per una trattazione più estesa.
Tra gli altri operatori ricordiamo solo la "implicazione" (se
allora
) e la "equivalenza logica" (
se e solo se
)
che hanno le seguenti tavole di verità:
P | Q | P ==> Q | P <==> Q | |||
V V F F |
V F V F |
V F V V |
V F F V |
[ P ==> Q è falsa solo quando P è vera e Q è falsa; equivale quindi a !(P & !Q) ]
Note. Invece di NOT t1 = t2 si usa spesso scrivere t1 ≠ t2. Analogamente, se è un simbolo che mette in relazione due oggetti matematici A e B, si usa scrivere A B invece di
altri collegamenti [nuova pagina]
Approfondimenti
Le condizioni vengono dette anche "termini (o espressioni) booleane", dal nome del matematico inglese Boole che per primo introdusse l'impiego di simboli per rappresentare gli operatori logici e che per primo mise a fuoco le analogie tra la struttura delle condizioni e la struttura dei termini numerici.
Una condizione o termine booleano può essere più precisamente descritto come:
una formula (equazione, disequazione o altro tipo di relazione) o una espressione costruita a partire da formule (che sono quindi gli atomi, così come variabili e costanti sono gli atomi da cui si parte per costruire gli altri termini numerici) introducendo opportunamente operatori logici (ed eventuali simboli di parentesi per delimitare i sottotermini). Anche la struttura di un termine booleano può essere descritta mediante un grafo ad albero. Ad esempio: | NOT | OR __/ \__ x = 0 AND ___/ \___ 3 <= x x < 5 |
I simboli relazionali che intervengono nelle formule possono essere interpretati come simboli di funzioni ad output in {V,F}
(ad esempio la formula x≤y può essere pensata come una funzione che a (x,y) associa V se x è minore di y o x è uguale a y, e associa F altrimenti),
in modo che una condizione più complessa può essere in ogni caso pensata come una funzione ad output in {V,F}.
Molti linguaggi di programmazione indicano V e F con numeri: alle condizioni false associano il valore 0, a quelle vere il valore 1
(ma considerano come condizione vera anche ogni altro termine che abbia valore diverso da 0);
ad es. 1<2 e 3<2 hanno
come output -1 0 (la prima condizione è vera, la seconda è falsa).
In R, invece, print ( c(1<2, 3<2) ) fornisce
TRUE FALSE. Si possono comunque usare anche 1 (o −1 o
) e 0 come V e F;
ad esempio
Nota. Le equazioni e disequazioni vengono anche chiamate formule atomiche invece che solo formule, quando si usa quest'ultimo termine per indicare più in generale termini booleani ed espressioni in cui intervengono anche altri simboli logici (di cui si discute in una voce successiva: Definizioni e dimostrazioni.
I connettivi nella lingua comune
La semantica dei linguaggi formali che si usano in matematica ed informatica non ha molto a che fare con quella del linguaggio naturale.
In quest'ultimo vi è una fortissima dipendenza dal contesto,
che può modificare profondamente il significato di una
frase. Due esempi:
una frase come «ha un vestito giallo»
può assumere una gamma di
significati che va da «ha un vestito completamente giallo»
a «ho un vestito in cui c'è anche del giallo»;
se il vestito è a fiori gialli dietro i quali si intravede uno sfondo bianco l'affermazione «ha un vestito giallo»
deve essere interpretata come "vera" o "falsa"?
l'affermazione «Giorgio questa volta ha preso la sufficienza» non fornisce, comunemente, solo un'informazione su come gli è
andato il compito in classe di Inglese, ma dice anche che Giorgio
di solito non va un gran che bene in Inglese;
tuttavia se sapessimo che Giorgio è il primo della classe in Inglese interpreteremmo la frase diversamente,
e del voto non penseremmo solo che è maggiore o uguale a 6 (supponendo che 6 sia il minimo voto sufficiente) ma che è 6 o non lo supera di molto.
Questa dipendenza dal contesto è presente anche in matematica, quando ci si esprime usando il linguaggio comune.
Quanto detto vale, in particolare quando si usano i connettivi linguistici "e", "o" e "non", che spesso assumono
significati diversi da quelli descritti dalle tabelle di verità riportate sopra.
Le frasi «Mario entrò nella casa e si tolse le scarpe»
e «Mario si tolse le scarpe e entrò nella casa»,
che dovrebbero essere equivalenti considerando "e" commutativo come l'AND della tabellina, rappresentano indubbiamente situazioni diverse: qui "e" equivale a "e poi".
Nella frase «Pierino accendeva e spegneva il televisore in
continuazione» il connettivo "e" collega due forme
verbali ("accendeva" e "spegneva") che descrivono addirittura azioni mutuamente incompatibili.
Nel linguaggio naturale, poi, un connettivo può legare anche
entità che non siano proposizioni (ad esempio, due aggettivi)
assumendo significati difficilmente schematizzabili; in qualche caso
il connettivo collega in realtà due affermazioni:
«l'automobile di Gianni è bella e veloce» è
equivalente a «l'automobile di Gianni è bella e
l'automobile di Gianni è veloce»; «l'automobile di
Gianni è bianca e rossa» non è invece equivalente
a una congiunzione di due proposizioni: qui la "e" serve
piuttosto a costruire un nuovo aggettivo a partire da "bianco"
e "rosso".
Qualche esempio con "o". In «dall'accento direi che è
genovese o ligure» capiamo che "o" è da intendersi come "inclusivo", mentre
in «lo vuoi o no?» capiamo che dobbiamo considerarlo "esclusivo". Ma in
«vogliamo rose rosse o bianche» se non conosciamo il contesto in cui viene formulata la richiesta
non possiamo capire se va bene che vi siano rose sia rosse che bianche o se devono essere tutte rosse o tutte bianche.
Per il "non" si possono fare esempi analoghi. «Non è falso ciò che ha detto» non sempre vuol dire che ha detto il "vero": potrebbe aver fatto un'affermazione
che contiene degli elementi di verità.