# Logica proposizionale

La logica proposizionale (o enunciativa) è un linguaggio formale con una semplice struttura sintattica, basata fondamentalmente su proposizioni elementari (atomi) e su connettivi logici di tipo vero-funzionale, che restituiscono il valore di verità di una proposizione in base al valore di verità delle proposizioni connesse (solitamente noti come AND, OR, NOT...). La semantica della logica proposizionale definisce il significato dei simboli e di qualsiasi proposizione che rispetti le regole sintattiche del linguaggio, basandosi sui valori di verità associati agli atomi. Data una interpretazione (o modello) di una proposizione (in generale di un insieme di proposizioni), e cioè una associazione tra le proposizioni elementari e le realtà rappresentate, possiamo generare un insieme infinito di proposizioni con significato definito che riguardino quella realtà. Ciascuna proposizione si riferisce quindi a uno o più oggetti della realtà rappresentata (anche astratta) e permette di descrivere o ragionare su quell'oggetto, utilizzando i due soli valori "vero" e "falso".

## Sintassi

La definizione della struttura delle frasi (o sintassi) della logica proposizionale si fonda su due componenti:
* un alfabeto di simboli
* un insieme di sequenze di simboli (un linguaggio) definito tramite una grammatica generativa

### Alfabeto

L'alfabeto della logica proposizionale è costituito da:
* Un insieme numerabile di simboli di proposizione: $p,q,r,\ldots$
* I simboli dei connettivi logici: $\neg$ (NOT), $\wedge$ (AND), $\vee$ (OR), $\to$ (implicazione), $\leftrightarrow$ (doppia implicazione)
* Le parentesi: $$ (hanno per lo più lo scopo di rendere il linguaggio più chiaro ed evitare ambiguità)

### Formule ben formate

Le espressioni "sintatticamente corrette" della logica proposizionale (quelle che dovrebbero rappresentare degli enunciati dotati di senso in modo non ambiguo) sono chiamate formule ben formate, brevemente fbf (spesso in letteratura si trova anche wff, dall'inglese "well-formed formulas"), e sono definite mediante la seguente definizione ricorsiva:
* un simbolo di proposizione è una fbf
* se $A$ è una fbf lo è anche $(\neg A)$
* se $A$ e $B$ sono fbf allora lo sono anche $(A\wedge B)$, $(A\vee B)$, $(A\to B)$ e $(A\leftrightarrow B)$
* niente altro è una fbf
Sono esempi di formule ben formate:
* $p$ (dalla regola 1)
* $(\neg p)$ (dalla regola 2 applicata alla fbf precedente)
* $(p\wedge (\neg p))$ (dalla regola 3 applicata alle due fbf precedenti)
* $((p\wedge (\neg p))\vee (\neg p))$ (dalla regola 3 applicata alle due fbf precedenti)
Sono esempi di non formule ($p$ e $q$ sono simboli di proposizione):
* $p\wedge ((q$
* $p\wedge \vee q$
Stabilire il seguente ordine di precedenza dei connettivi logici, come accade per la moltiplicazione rispetto all'addizione, permette un utilizzo minore delle parentesi:
* $\neg$, $\wedge$, $\vee$, $\to$, $\leftrightarrow$
Per esempio $p\wedge \neg q$ è la formula $(p\wedge (\neg q))$.
Inoltre, si considerano i connettivi logici associativi a sinistra [ p $\wedge$ q $\wedge$ r viene reinterpretato come ((p $\wedge$ q) $\wedge$ r) ].
Le regole sopra esposte definiscono il linguaggio della logica proposizionale attraverso una grammatica generativa.
La grammatica della logica proposizionale scritta in BNF è la seguente:
    f := l e L | (NOT f) | (f1 AND f2) | (f1 OR f2) | (f1 -> f2) | (f1 <-> f2)

## Semantica

Alle formule della logica proposizionale possono essere associati dei valori di verità mediante una funzione di valutazione:
Si chiama funzione di valutazione una funzione che va dall'insieme L delle formule ben formate nell'insieme {V,F} (vero, falso)
    v : L → {V,F}
tale che per ogni coppia di fbf x e y valgano le seguenti condizioni:
    v(¬x) = V se v(x) = F
    v(¬x) = F se v(x) = V
    v(x$\wedge$y) = V se e solo se v(x) = V e v(y) = V
    v(x$\vee$y) = V se e solo se v(x) = V oppure v(y) = V
    v(x→y) = V se e solo se v(x) = F oppure v(y) = V
    v(x↔y) = V se e solo se v(x) = v(y)
Tali condizioni rispecchiano il significato che si vuole attribuire ai simboli associati ai connettivi logici e si possono riassumere mediante la seguente tavola di verità:
| $P$ | $Q$ | $\neg$$P$ | $P$ $\wedge$ $Q$ | $P$ $\vee$ $Q$ | $P$ → $Q$ | $P$ ↔ $Q$ |
| V | V | F | V | V | V | V |
| V | F | F | F | V | F | F |
| F | V | V | F | V | V | F |
| F | F | V | F | F | V | V |
Si dimostra che una valutazione è univocamente individuata dai valori che assume sui simboli di proposizione: i valori sulle formule più complesse in cui compaiono simboli di operatori logici possono essere dedotti a partire dalle condizioni sopra esposte che definiscono una valutazione.

### Soddisfacibilità, tautologie e contraddizioni

Sono importanti le seguenti definizioni:
Una formula ben formata A si dice
* soddisfacibile se esiste una valutazione v tale che v(A)=V,
* contraddizione se non è soddisfacibile,
* tautologia se per ogni valutazione v si ha v(A)=V,
Un banale esempio di formula soddisfacibile è p, un esempio di formula contraddittoria è (p$\wedge$¬p), un esempio di tautologia è (p$\vee$¬p).
Il problema di stabilire se una formula è soddisfacibile - noto anche come Problema di soddisfacibilità booleana - è un problema decidibile: si può risolvere considerando tutte le possibili combinazioni di valutazioni sui simboli proposizionali e calcolando il corrispondente valore di verità della formula composta sfruttando le proprietà della funzione di valutazione. Il teorema di Cook-Levin stabilisce che tale problema appartiene alla classe dei problemi NP-completi.
La definizione di soddisfacibilità si può estendere a insiemi (eventualmente infiniti) di formule ben formate:
Un insieme di fbf S si dice soddisfacible se esiste una valutazione v che assegna valore V a tutte le formule di S.
Il teorema di compattezza stabilisce che un insieme di fbf S è soddisfacibile se e solo se ogni suo sottoinsieme finito è soddisfacibile.
Con altri termini è possibile dare le seguenti definizioni. Una formula ben formata A è:
* soddisfacibile se esiste una interpretazione I di A in cui A è vera; in questo caso I si dice modello di A.
* falsificabile se esiste una interpretazione I tale che A è falsa; I si chiama contromodello di A.
* valida se A è vera in ogni interpretazione.