Esercitazioni per l’Insegnamento di Metodi Formali
Guido Fiorino
[email protected]
10 ottobre 2013
1
Logica proposizionale
1. Stabilire quali assegnamenti (modelli della logica proposizionale) soddisfano/rendono vere le seguenti formule:
(a) p → p;
(b) p → ¬p;
(c) (p ∨ ¬p)
(d) p → (p ∧ ¬p);
(e) (p ∨ ¬p) → (p ∧ ¬p);
(f) p → r;
(g) p → (p ∨ r).
2. Consideriamo le variabili proposizionali p, q, r, t:
(a) scrivere una formula che sia soddisfatta da quei modelli/assegnamenti della logica proposizionale che
rendono vera p e false q, r, t;
(b) scrivere una formula che sia soddisfatta da quei modelli/assegnamenti della logica proposizionale che
rendono vera almeno una delle variabli proposizionali p, q, r, t;
(c) scrivere una formula che sia soddisfatta da quei modelli/assegnamenti della logica proposizionale che
rendono vera esattamente una delle variabili proposizionali p, q, r, t;
(d) scrivere una formula che sia soddisfatta da quei modelli/assegnamenti della logica proposizionale che
rendono vere esattamente due delle variabili proposizionali p, q, r, t.
3. Esprimiamo le seguenti frasi dichiarative in logica proposizionale:
(a) se oggi c’è il sole, allora domani non ci sarà il sole;
(b) se la pressione atmosferica è bassa, allora piove o nevica;
1
(c) se c’è una richiesta, allora la richiesta è servita oppure il processo è bloccato;
4. Scrivere una formula della logica proposizionale corrispondente alla situazione seguente:
ci sono 3 piccioni e due ciotole. Ogni piccione sta mangiando da almeno una delle due ciotole. Scrivere la
formula che esprime il fatto che se ogni piccione sta mangiando da almeno una delle due ciotole, allora due
piccioni mangiano dalla stessa ciotola.
5. Scrivere le formule della logica proposizionale corrispondenti alla situazione qui sotto descritta:
(a) Se il treno è in ritardo e non ci sono taxi alla stazione, allora Marco è in ritardo per l’appuntamento;
(b) marco non è in ritardo per l’appuntamento;
(c) il treno è in tardo.
In base ai fatti sopra riportati, dedurre che alla stazione ci sono dei taxi.
Suggerimento: introdurre delle variabili proposizionali per le affermazioni date e formalizzare mediante
una formula proposizionale ciascuna delle frasi (a)-(c) e ”alla stazione ci sono dei taxi”. Mostrare, ad
esempio usando le tavole di verità, che se (a)-(c) sono vere allora per forza è vera l’affermazione ”alla
stazione ci sono dei taxi”.
6. Scrivere le formule della logica proposizionale corrispondenti alla situazione qui sotto descritta:
(a) Se sta piovendo e Anna non ha l’ombrello, allora Anna è bagnata;
(b) sta piovendo;
(c) Anna non è bagnata.
In base ai fatti sopra riportati, dedurre che Anna ha l’ombrello.
7. Scrivere le formule della logica proposizionale corrispondenti alla situazione qui sotto descritta:
tre criminali, che indicheremo come A, B, C sono interrogati a causa di un furto commesso usando un
furgone. I seguenti fatti sono stati accertati:
(a) nessun altro tranne A, B e C è implicato nel furto;
(b) C non fa mai un colpo senza la complicità di A (e magari di altri);
(c) B non sa guidare.
In base ai fatti sopra riportati svolgere una deduzione per stabilire se
• A è colpevole o innocente;
• B è colpevole o innocente;
• C è colpevole o innocente.
Suggerimento: introdurre tre variabili proposizionali corrispondenti alle affermazioni ”A è colpevole”, ”B
è colpevole”, ”C è colpevole” e formalizzare mediante una formula proposizionale ciascuna delle frasi (a)-(c).
Eseguire la deduzione usando, ad esempio, le tavole di verità.
2
8. Consideriamo il seguente frammento di (pseudo)codice:
if (pressioneCabina < pressioneMinima) iniziaAtterraggio();
if (altezzaVolo < altezzaMinima) iniziaAtterraggio();
Si propone di cambiarlo come segue:
if ((pressioneCabina < pressioneMinima) and (altezzaVolo < altezzaMinima))
iniziaAtterraggio();
Il cambiamento è corretto? Dimostrarlo.
Suggerimento: introdurre tre variabili proposizionali per le affermazioni ”pressioneCabina < pressioneMinima”, ”altezzaVolo < altezzaMinima” e ”iniziaAtterraggio()”, formalizzare con formule proposizionali
i due frammenti di codice. Usare, ad esempio, le tabelle di verità, per stabilire se i due frammenti sono
equivalenti.
9. Anna deve risolvere un indovinello dato da Biagio, Carlo e Dario. Biagio, Carlo e Dario hanno scritto i loro
nomi su tre fogli di carta e dicono ad Anna che se li sono scambiati, in modo che ciascuno di loro ha in mano
un foglio di carta sul quale vi è il nome di uno degli altri due amici (esempio Biagio può avere in mano il
foglio su cui vi è scritto ”Carlo” o quello sul quale vi è scritto ”Dario”).
(a) Scrivere la formula proposizionale che esprime il fatto che ciascuno dei tre Biagio, Carlo e Dario ha in
mano esattamente un foglio con impresso il nome di uno degli altri due.
Soluzione: introduciamo le variabili proposizionali bc, bd, cb, cd, db, dc corrispondenti alle seguenti
proposizioni:
•
•
•
•
•
•
bc:
bd:
cb:
cd:
db:
dc:
sul foglio in mano a Biagio vi è scritto Carlo;
sul foglio in mano a Biagio vi è scritto Dario;
sul foglio in mano a Carlo vi è scritto Biagio;
sul foglio in mano a Carlo vi è scritto Dario;
sul foglio in mano a Dario vi è scritto Biagio;
sul foglio in mano a Dario vi è scritto Carlo.
Consideriamo Biagio: egli ha in mano un foglio, quindi deve essere vera almeno una tra bc e bd.
D’altronde Biagio ha in mano solo un foglio, cosı̀ al massimo una tra bc e bd deve essere vera, quindi
scriviamo:
(bc ∨ bd) ∧ ¬(bc ∧ bd)
la quale può anche essere riscritta pensando che o è vera bc, nel qual caso bd deve essere falsa, oppure
è vera bd, nel qual caso bc è falsa. Quindi la seguente formula è equivalente alla precedente:
(bc ∧ ¬bd) ∨ (¬bc ∧ bd)
3
Lo stesso ragionamento vale per Carlo e Dario. Un modo per formalizzare la situazione è quindi
mediante la formula:
(bc ∨ bd) ∧ ¬(bc ∧ bd) ∧
(cb ∨ cd) ∧ ¬(cb ∧ cd) ∧
(db ∨ dc) ∧ ¬(db ∧ dc)
Attenzione però! La formalizzazione appena data riguarda solo un aspetto della descrizione del problema: quello in cui si dice che una persona ha in mano esattamente un foglio sul quale vi è scritto un
nome diverso dal proprio. C’è un aspetto della formalizzazione che non abbiamo ancora considerato,
cioè il fatto che un foglio può stare in mano al massimo ad una tra due persone. Ad esempio, il foglio
con scritto Biagio può stare nelle mani di Carlo o di Dario, ma non di entrambi. La formula che
abbiamo scritto può essere soddisfatta assegnando valore vero alle due variabili cb e db, ma in tal caso
staremmo dicendo che è ammissibile che sia Carlo che Dario hanno in mano un foglio con su scritto
Biagio. Questo chiaramente è impossibile in base alla descrizione del problema. Questo significa che
non abbiamo completato la formalizzazione del problema e manca una parte: quella che esprime per
ogni foglio nelle mani di chi esso può trovarsi.
Consideraimo il foglio contenente il nome Biagio: esso può trovarsi nelle mani di Carlo o in quelle di
Dario, ma non nelle mani di entrambi. Questo lo formalizziamo con la formula:
(cb ∨ db) ∧ ¬(cb ∧ db)
Lo stesso ragionamento vale per i fogli contenenti i nomi di Carlo e Dario. Questa seconda parte della
formalizzazione del problema è espressa dalla formula:
(cb ∨ db) ∧ ¬(cb ∧ db) ∧
(bc ∨ dc) ∧ ¬(bc ∧ dc) ∧
(bd ∨ cd) ∧ ¬(bd ∧ cd)
A questo punto la formalizzazione completa è la congiunzione delle due formula, quindi:
(bc ∨ bd) ∧ ¬(bc ∧ bd)
(cb ∨ cd) ∧ ¬(cb ∧ cd)
(db ∨ dc) ∧ ¬(db ∧ dc)
(cb ∨ db) ∧ ¬(cb ∧ db)
(bc ∨ dc) ∧ ¬(bc ∧ dc)
(bd ∨ cd) ∧ ¬(bd ∧ cd)
∧
∧
∧
∧
∧
(b) supponiamo che ad Anna venga svelato che sul foglio di Biagio vi è scritto Carlo. Usare la formalizzazione del punto precedente per dedurre cosa c’è scritto sui fogli in mano a Carlo e Dario.
Formalmente questo significa sapere che bc è vera e formalmente ci troviamo davanti al fatto che valgono due formule: quella precedente e bc. Possiamo perverire alla soluzione del problema o usando
la tabella della verità con 32 righe (5 variabili) e verificando dove la formula è vera, oppure possiamo
usare un metodo deduttivo che sfrutti il significato dei connettivi. In ogni caso si troverà che esiste un
solo modo (assegnamento alle variabili proposizionali) per soddisfare le formule e da tale assegnamento
deduciamo quale foglio hanno in mano Carlo e Dario.
4