Vai al contenuto
Topos Uranos

Riepilogo

Una stessa funzione di verità ammette infinite formule che la rappresentano, e nessuna di esse, presa a caso, lascia vedere ciò che dice. Questa lezione fissa due stampi in cui ogni formula entra a meno di equivalenza: la forma normale disgiuntiva, una disgiunzione di congiunzioni di letterali, e la forma normale congiuntiva, una congiunzione di disgiunzioni di letterali. Si definiscono i letterali, le clausole e le congiunzioni elementari; si dimostra che la negazione trasforma una forma nell’altra quando ogni letterale viene trasformato nel suo opposto, il che costituisce la dualità tra le due; si costruiscono a partire dalla tavola di verità le forme canoniche e si dimostra che sono uniche. Il teorema di esistenza riceve due dimostrazioni: mediante la tavola, come corollario della completezza funzionale, e per induzione sulla complessità, con l’unico caso della negazione congiunta e con l’ipotesi doppia che quella dimostrazione richiede. Alla fine si vede perché valgono lo sforzo: la validità di una forma congiuntiva e la soddisfacibilità di una disgiuntiva si decidono a colpo d’occhio.

Obiettivi di apprendimento

  1. Riconoscere letterali, clausole, congiunzioni elementari e formule in forma normale disgiuntiva o congiuntiva, distinguendo la forma, che è una proprietà della stringa, dall’equivalenza, che è una proprietà del significato.
  2. Costruire a partire dalla tavola di verità le forme canoniche disgiuntiva e congiuntiva di una formula, e dimostrare che la forma canonica è unica e che determina la classe di equivalenza della formula.
  3. Dimostrare per induzione sulla complessità che ogni formula equivale a una forma normale disgiuntiva e a una congiuntiva, usando la dualità, le leggi generalizzate di De Morgan e distributive e la sostituzione semantica.
  4. Decidere a colpo d’occhio la validità di una forma normale congiuntiva e la soddisfacibilità di una disgiuntiva, e applicare le forme normali alla conseguenza semantica e alla misura della dimensione minima di una forma normale.

Nelle lezioni precedenti di questa unità si è dato significato alle formule: la lezione sulla semantica della logica proposizionale ha esteso ogni assegnazione a tutte le formule; la lezione su conseguenza ed equivalenza semantica ha definito l’equivalenza φ≡ψ\varphi \eqsem \psi e ha dimostrato la sostituzione semantica; la lezione sulle leggi generalizzate di De Morgan e distributive ha esteso quelle leggi a congiunzioni e disgiunzioni di nn formule; e la lezione sulla completezza funzionale ha mostrato che ogni funzione di verità è rappresentata da qualche formula. Ora, una funzione di verità è rappresentata da infinite formule, che possono essere molto diverse tra loro: (v1→v2)(v_1 \rightarrow v_2), ¬(v1∧¬v2)\neg(v_1 \wedge \neg v_2) e (((v1↓v1)↓v2)↓((v1↓v1)↓v2))(((v_1 \downarrow v_1) \downarrow v_2) \downarrow ((v_1 \downarrow v_1) \downarrow v_2)) sono tre nomi della stessa cosa. Se è così, conviene scegliere in ogni classe di equivalenza un rappresentante di forma fissa, che si legga senza sforzo e con il quale certe domande trovino risposta guardando. Questo sono le forme normali.

Letterali, clausole e forme normali

Si ricordi, dalla lezione sulle leggi generalizzate, la notazione della congiunzione e della disgiunzione di nn formule, definita per ricorsione e associando a sinistra; quella di una sola formula è la formula stessa.

⋀i=11φi=φ1,⋀i=1n+1φi=(⋀i=1nφi∧φn+1)\bigwedge_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigwedge_{i=1}^{n + 1} \varphi_i = \left( \bigwedge_{i=1}^{n} \varphi_i \wedge \varphi_{n + 1} \right)
⋁i=11φi=φ1,⋁i=1n+1φi=(⋁i=1nφi∨φn+1)\bigvee_{i=1}^{1} \varphi_i = \varphi_1, \qquad \bigvee_{i=1}^{n + 1} \varphi_i = \left( \bigvee_{i=1}^{n} \varphi_i \vee \varphi_{n + 1} \right)

Nella stessa lezione si è dimostrato che l’ordine e il raggruppamento dei termini non alterano la formula a meno di equivalenza (associatività generalizzata e indipendenza dall’ordine e dalle ripetizioni); per questo scriveremo anche φ1∧φ2∧⋯∧φn\varphi_1 \wedge \varphi_2 \wedge \cdots \wedge \varphi_n senza parentesi, intendendo il raggruppamento a sinistra.

Un letterale è una variabile vnv_n, che si chiama letterale positivo, o la negazione ¬vn\neg v_n di una variabile, che si chiama letterale negativo. L’opposto di un letterale ℓ\ell, che scriviamo ℓ∗\ell^{*}, è il letterale della stessa variabile e dell’altro segno:

ℓ=vn  ⇒  ℓ∗=¬vn,ℓ=¬vn  ⇒  ℓ∗=vn\ell = v_n \;\Rightarrow\; \ell^{*} = \neg v_n, \qquad \ell = \neg v_n \;\Rightarrow\; \ell^{*} = v_n

Dalla definizione segue che (ℓ∗)∗=ℓ(\ell^{*})^{*} = \ell. Due letterali formano una coppia complementare se l’uno è l’opposto dell’altro, come v3v_3 e ¬v3\neg v_3.

Una clausola è una disgiunzione di letterali, ⋁j=1kℓj\bigvee_{j=1}^{k} \ell_j, e una congiunzione elementare è una congiunzione di letterali, ⋀j=1kℓj\bigwedge_{j=1}^{k} \ell_j, con k≥1k \geq 1 in entrambi i casi; un letterale da solo è quindi allo stesso tempo una clausola e una congiunzione elementare. Si dice che un letterale sta in una clausola o in una congiunzione elementare se è uno dei suoi ℓj\ell_j.

Una formula è in forma normale disgiuntiva se è una disgiunzione di congiunzioni elementari, e in forma normale congiuntiva se è una congiunzione di clausole; cioè, se è, rispettivamente, di una delle due forme seguenti, dove mm e k1,…,kmk_1, \ldots, k_m sono numeri naturali e ogni ℓi,j\ell_{i,j} è un letterale:

⋁i=1m⋀j=1kiℓi,j,⋀i=1m⋁j=1kiℓi,j\bigvee_{i=1}^{m} \bigwedge_{j=1}^{k_i} \ell_{i,j}, \qquad \bigwedge_{i=1}^{m} \bigvee_{j=1}^{k_i} \ell_{i,j}

Diremo che Φ\Phi è una forma normale disgiuntiva di φ\varphi se è in forma normale disgiuntiva e φ≡Φ\varphi \eqsem \Phi, e lo stesso per la congiuntiva. Le lunghezze kik_i possono variare da una congiunzione (o clausola) all’altra: esigere lo stesso numero di letterali in tutte obbligherebbe a riempire con ripetizioni e non aggiungerebbe nulla.

EsempioChe cosa è e che cosa non è in forma normale

La formula (v1∧¬v2)∨¬v3(v_1 \wedge \neg v_2) \vee \neg v_3 è in forma normale disgiuntiva, con m=2m = 2, k1=2k_1 = 2 e k2=1k_2 = 1; non è in forma congiuntiva, perché non è una congiunzione (i suoi due componenti sono distinti, e una congiunzione è una doppia negazione), né è una clausola: letta come disgiunzione, ha un termine, (v1∧¬v2)(v_1 \wedge \neg v_2), che non è un letterale né una disgiunzione di letterali. La formula v1∧¬v2∧v3v_1 \wedge \neg v_2 \wedge v_3 è in entrambe le forme: come disgiunzione di una sola congiunzione elementare (m=1m = 1) e come congiunzione di tre clausole di un letterale ciascuna. Allo stesso modo, (¬v1∨v2)(\neg v_1 \vee v_2) è allo stesso tempo una clausola, cioè una forma congiuntiva con m=1m = 1, e una forma disgiuntiva di due congiunzioni di un letterale.

(v1∧¬v2)∨¬v3,v1∧¬v2∧v3,¬v1∨v2(v_1 \wedge \neg v_2) \vee \neg v_3, \qquad v_1 \wedge \neg v_2 \wedge v_3, \qquad \neg v_1 \vee v_2

Invece, (v1↓v2)(v_1 \downarrow v_2) e ¬(v1→v2)\neg(v_1 \rightarrow v_2) non sono in nessuna delle due forme, benché la prima equivalga a (¬v1∧¬v2)(\neg v_1 \wedge \neg v_2) e la seconda a (v1∧¬v2)(v_1 \wedge \neg v_2), che lo sono.

(v1↓v2)≡¬v1∧¬v2,¬(v1→v2)≡v1∧¬v2(v_1 \downarrow v_2) \eqsem \neg v_1 \wedge \neg v_2, \qquad \neg(v_1 \rightarrow v_2) \eqsem v_1 \wedge \neg v_2

Conviene soffermarsi su che cosa significhi «essere in forma normale». È una proprietà della stringa di cerchi e dischi, non del suo significato: la lezione sull’induzione sui numeri naturali e sulle formule ha dimostrato la leggibilità unica, di modo che chiedere se una formula è una disgiunzione, e di che cosa, ha una sola risposta. Ora, le abbreviazioni ufficiali fanno sì che alcune formule siano in forma normale senza sembrarlo. L’implicazione (v1→v2)(v_1 \rightarrow v_2) si definisce come (¬v1∨v2)(\neg v_1 \vee v_2): non è che equivalga a quella clausola, ma è quella stessa stringa, e perciò è già in forma normale. Più sorprendente è la doppia negazione. Per le definizioni di ¬\neg e di ∨\vee, la stringa (φ∨φ)(\varphi \vee \varphi) è ¬(φ↓φ)\neg(\varphi \downarrow \varphi), cioè ¬¬φ\neg\neg\varphi; quindi ¬¬v1\neg\neg v_1 non è un letterale, ma è, simbolo per simbolo, la clausola (v1∨v1)(v_1 \vee v_1).

(φ∨φ)=¬(φ↓φ)=¬¬φ(\varphi \vee \varphi) = \neg(\varphi \downarrow \varphi) = \neg\neg\varphi

Il valore delle congiunzioni e delle disgiunzioni

Dalla lezione sulla semantica si prendono i valori dei connettivi derivati: v(¬φ)=1−v(φ)v(\neg\varphi) = 1 - v(\varphi); v(φ∧ψ)=v(φ) v(ψ)v(\varphi \wedge \psi) = v(\varphi)\,v(\psi), che vale 11 se e solo se entrambe valgono 11; e v(φ∨ψ)=0v(\varphi \vee \psi) = 0 se e solo se entrambe valgono 00. La lezione sulle leggi generalizzate di De Morgan e distributive li ha estesi a nn formule, per induzione sul numero dei termini, nel lemma del valore: per ogni assegnazione vv, la congiunzione ⋀i=1nφi\bigwedge_{i=1}^{n} \varphi_i vale 11 in vv se e solo se ogni φi\varphi_i vale 11 in vv, e la disgiunzione ⋁i=1nφi\bigvee_{i=1}^{n} \varphi_i vale 11 in vv se e solo se qualche φi\varphi_i vale 11 in vv. Questo lemma, che qui si cita senza ripeterne la dimostrazione, è lo strumento con cui si calcola il valore di qualsiasi forma normale.

LemmaNegazione di un letterale

Per ogni letterale ℓ\ell, la negazione di ℓ\ell equivale al suo opposto, ¬ℓ≡ℓ∗\neg\ell \eqsem \ell^{*}; in particolare, v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) per ogni assegnazione vv.

Dimostrazione

  1. ℓ=vn  ⇒  ¬ℓ=¬vn=ℓ∗\ell = v_n \;\Rightarrow\; \neg\ell = \neg v_n = \ell^{*}

    Se ℓ\ell è una variabile vnv_n, il suo opposto è ¬vn\neg v_n, che è esattamente la stringa ¬ℓ\neg\ell: non c’è nulla da dimostrare.

  2. ℓ=¬vn  ⇒  ¬ℓ=¬¬vn≡vn=ℓ∗\ell = \neg v_n \;\Rightarrow\; \neg\ell = \resaltar{\neg\neg v_n} \eqsem v_n = \ell^{*}

    Se ℓ\ell è ¬vn\neg v_n, la sua negazione è ¬¬vn\neg\neg v_n, che non è un letterale; per la legge della doppia negazione (lezione su conseguenza ed equivalenza semantica), equivale a vnv_n, che è l’opposto di ℓ\ell.

  3. v(ℓ∗)=v(¬ℓ)=1−v(ℓ)v(\ell^{*}) = v(\neg\ell) = 1 - v(\ell)

    In entrambi i casi, ℓ∗\ell^{*} e ¬ℓ\neg\ell hanno lo stesso valore in ogni assegnazione, e quello di ¬ℓ\neg\ell è dato dal valore della negazione.

Il secondo caso è facile da trascurare: negando una forma normale si tende a scrivere ¬ℓi,j\neg\ell_{i,j} invece di un letterale, e ¬¬vn\neg\neg v_n non lo è. È la doppia negazione a riportare il risultato nello stampo.

LemmaCongiunzioni elementari e clausole

Una congiunzione elementare è soddisfacibile se e solo se non contiene nessuna coppia complementare. Una clausola è valida se e solo se contiene qualche coppia complementare.

Dimostrazione

  1. v(ℓ) v(ℓ∗)=v(ℓ) (1−v(ℓ))=0v(\ell)\,v(\ell^{*}) = v(\ell)\,(1 - v(\ell)) = 0

    Se una congiunzione elementare contiene ℓ\ell e ℓ∗\ell^{*}, in ogni assegnazione uno dei due vale 00, per il lemma precedente; per il lemma del valore, la congiunzione vale 00 in ogni assegnazione.

  2. vn=ℓj  ⇒  v(vn)=1,¬vn=ℓj  ⇒  v(vn)=0\dato{val}{v_n = \ell_j \;\Rightarrow\; v(v_n) = 1, \qquad \neg v_n = \ell_j \;\Rightarrow\; v(v_n) = 0}

    Se non contiene nessuna coppia complementare, si definisce un’assegnazione che dà 11 a ogni variabile che vi sta come letterale positivo e 00 a ogni variabile che vi sta come letterale negativo (alle altre, 00). La definizione non è contraddittoria, perché nessuna variabile vi sta in entrambi i modi.

  3. v(⋀j=1kℓj)=1v\left( \bigwedge_{j=1}^{k} \ell_j \right) = 1

    In quell’assegnazione tutti i suoi letterali valgono 11, e per il lemma del valore la congiunzione vale 11: è soddisfacibile.

  4. v(ℓ)+v(ℓ∗)=1v(\ell) + v(\ell^{*}) = 1

    Se una clausola contiene ℓ\ell e ℓ∗\ell^{*}, in ogni assegnazione uno dei due vale 11, e la clausola vale 11: è valida.

  5. v(⋁j=1kℓj)=0v\left( \bigvee_{j=1}^{k} \ell_j \right) = 0

    Se non contiene nessuna coppia complementare, l’assegnazione che dà 00 alle sue variabili positive e 11 alle sue variabili negate fa valere 00 tutti i suoi letterali; per il lemma del valore, la clausola vale 00 in essa e non è valida.