Logica per la programmazione - Dipartimento di Informatica
Transcript of Logica per la programmazione - Dipartimento di Informatica
![Page 1: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/1.jpg)
LOGICA PER LA PROGRAMMAZIONEFranco [email protected]
![Page 2: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/2.jpg)
IPSE DIXIT
![Page 3: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/3.jpg)
Si consideri la frase: in un dato campione di pazienti, chi ha fatto uso di droghe pesanti ha utilizzato anche droghe leggere.
Quali delle seguenti osservazioni relative ai pazienti del campione si può dedurre da essa?
1)Chi ha fatto uso di droghe leggere ha utilizzato anche droghe pesanti
2)Chi non ha fatto uso di droghe leggere non ha utilizzato droghe pesanti
3)Chi non ha fatto uso di droghe pesanti non ha utilizzato droghe leggere
4)Chi non ha fatto uso di droghe leggere ha utilizzato droghe pesanti
![Page 4: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/4.jpg)
Tre amici, Antonio, Bruno e Corrado, sono incerti se andare al cinema. Si sa che: Se Corrado va al cinema, allora ci va anche Antonio; Condizione necessaria perché Antonio vada al cinema è
che ci vada Bruno. Il giorno successivo possiamo affermare con
certezza che:1)Se Corrado è andato al cinema, allora ci è andato
anche Bruno2)Nessuno dei tre amici è andato al cinema3)Se Bruno è andato al cinema, allora ci è andato anche
Corrado4)Se Corrado non è andato al cinema, allora non ci è
andato nemmeno Bruno
![Page 5: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/5.jpg)
FORMALIZZAZIONE DI DIMOSTRAZIONI Caso semplice: dimostrazioni di equivalenza (=)
E1= {giustificazione_1}
E2= {giustificazione_2}
........ = {giustificazione_n-1} En
![Page 6: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/6.jpg)
PRINCIPIO DI SOSTITUZIONE Se p=q allora una espressione r in cui a p è
sostituito q (o viceversa) mantiene il suo valore
In formule
r = r[q/p]
qpr r=
![Page 7: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/7.jpg)
DIMOSTRAZIONI: COMINCIAMO DALLA ARITMETICA
(a+b)(a-b)= {distributività della moltiplicazione rispetto all’addizione,
ovvero, in formule, (y+z)x = yx+zx applicata con a al posto di y, b al posto di z e (a-b) al posto di x}a(a-b)+b(a-b)
= {distributività della moltiplicazione rispetto alla sottrazione, due volte, ovvero, in formule, x(y-z) = xy-xz applicata la prima volta con x=a, y=a, z=b e la seconda con x=b, y=a, z=b}(aa-ab)+(ba-bb)
= {xx=x^2, e associatività dell’addizione}a^2-ab+ba –b^2
= {commutatività della moltiplicazione, e -x+x=0}a^2+0-b^2
= {x+0=x}a^2-b^2
![Page 8: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/8.jpg)
IL CALCOLO DELLE PROPOSIZIONI Le proposizioni (enunciati dichiarativi) sono
asserzioni a cui sia assegnabile in modo univoco un valore di verità in accordo ad una interpretazione del mondo a cui si riferiscono.
“dichiarativi sono non già tutti i discorsi, ma quelli in cui sussiste una enunciazione vera oppure falsa” Aristotele
![Page 9: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/9.jpg)
ESEMPI DI PROPOSIZIONI (IN ACCORDO ALLA INTERPRETAZIONE OVVIA)1. Roma è la capitale d’Italia
2. La Francia è uno stato del continente asiatico
3. 1+1 = 2
4. 2+2 = 3
![Page 10: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/10.jpg)
ESEMPI DI NON PROPOSIZIONI1. Che ora è?
2. Leggete queste note con attenzione
3. X+1 = 2
![Page 11: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/11.jpg)
CONNETTIVI LOGICIConnettivo Forma simbolica Operazione corrispondentenot ~ p negazioneand p ∧ q congiunzioneor p ∨ q disgiunzionese p allora q p ⇒ q implicazionep se e solo se q p ≡ q equivalenzap se q p ⇐ q conseguenza
![Page 12: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/12.jpg)
SINTASSI (STRUTTURA) DELLE PROPOSIZIONI Prop ::= Prop ≡ Prop | Prop ∧ Prop | Prop ∨ Prop |
Prop ⇒ Prop | Prop ⇐ Prop |Atom | ~Atom
Atom ::= T | F | Ide | (Prop)Ide ::= p | q | ……
![Page 13: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/13.jpg)
PRECEDENZA TRA CONNETTIVI
![Page 14: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/14.jpg)
SEMANTICA (SIGNIFICATO) DELLE PROPOSIZIONI
p q ∼p p∧q p∨q p⇒q p≡q p⇐qT T F T T T T TT F F F T F F TF T T F T T F FF F T F F T T T
![Page 15: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/15.jpg)
TAUTOLOGIE E CONTRADDIZIONI
Una tautologia è una formula del calcolo proposizionale che vale T per qualunque valore T/F assegnato alle variabili proposizionali Esempio: p ∨ ∼p (vedi tabella di verità)
Una contraddizione è una formula che vale F per qualunque valore T/F assegnato alle variabili proposizionali
Quindi P è una tautologia se e solo se ~P è una contraddizione
![Page 16: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/16.jpg)
Implicazioni e Equivalenze Tautologiche
Diciamo che p implica tautologicamente q
se e solo se p ⇒ q è una tautologia
p è tautologicamente equivalente a qse e solo se
p ≡ q è una tautologia
La proprietà di essere una tautologia e il principio di sostituzione ci permettono di dimostrare implicazioni e equivalenze tautologiche
![Page 17: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/17.jpg)
LEGGI Le leggi sono tautologie (dimostrabili p.e. con le
tabelle di verità) utili per effettuare le dimostrazioni
Leggi per ≡p ≡ p (Riflessività)(p ≡ q) ≡(q ≡ p) (Simmetria)((p ≡ q) ≡ r) ≡(p ≡(q ≡ r)) (Associatività)(p ≡ T) ≡ p (Unità)((p ≡ q) ∧(q ≡ r)) ⇒(p ≡ r) (Transitività)
![Page 18: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/18.jpg)
LEGGI PER CONGIUNZIONE E DISGIUNZIONEp ∨ q ≡ q ∨ p (Commutatività)p ∧ q ≡ q ∧ pp ∨ (q ∨ r) ≡ (p ∨ q) ∨ r (Associatività)p ∧ (q ∧ r) ≡ (p ∧ q) ∧ rp ∨ p ≡ p (Idempotenza)p ∧ p ≡ pp ∧ T ≡ p (Unità)p ∨ F ≡ pp ∧ F ≡ F (Zero)p ∨ T ≡ Tp ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) (Distributività)p ∨ (q ∧ r) ≡ (p ∨ q) ∧ (p ∨ r)
![Page 19: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/19.jpg)
ESEMPIOTeorema: p ∨ (q ∨ r) ≡ (p ∨ q) ∨ (p ∨ r) Prova:
(p ∨ q) ∨ (p ∨ r)≡ {Commutatività}
(q ∨ p) ∨ (p ∨ r)≡ {Associatività}
q ∨ (p ∨ (p ∨ r))≡ {Associatività}
q ∨ ((p ∨ p) ∨ r)≡ {Idempotenza}
q ∨ (p ∨ r)≡ {Associatività}
(q ∨ p) ∨ r≡ {Commutavità}
(p ∨ q) ∨ r≡ {Associatività}
p ∨ (q ∨ r)
![Page 20: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/20.jpg)
COMMENTI La dimostrazione fatta usando le leggi (tautologie
utili per trasformare proposizioni in proposizioni equivalenti) garantisce la correttezza della dimostrazione
Naturalmente la tecnica non automatizza le dimostrazioni. Rimane a carico nostro la scelta delle leggi da usare, da quale membro della equivalenza partire, l’organizzazione della sequenza dei passaggi.
![Page 21: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/21.jpg)
LEGGI DI ASSORBIMENTO (1) p ∧(p ∨ q) ≡ p (Assorbimento) p ∨(p ∧ q) ≡ p
Prova (semantica) di p ∧(p ∨ q) ≡ p
p q (p∨q) p∧(p∨q)F F F FF T T FT F T TT T T T
![Page 22: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/22.jpg)
LEGGI DI ASSORBIMENTO (2) p ∧(p ∨ q) ≡ p (Assorbimento) p ∨(p ∧ q) ≡ p
Prova (calcolo) di p ∧(p ∨ q) ≡ pp ∧(p ∨ q) ≡ {Unità}
(p ∨ F) ∧ (p ∨ q)≡ {Distributività}
p ∨(F ∧ q)≡ {Zero}
p ∨ F≡ {Unità}
p
![Page 23: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/23.jpg)
LEGGI DELLA NEGAZIONE~(~ p) ≡ p (Doppia negazione)p ∨~p ≡ T (Terzo escluso)p ∧~p ≡ F (Contraddizione)~p ∨ ~q ≡ ~(p ∧ q) (De Morgan)~p ∧ ~q ≡ ~(p ∨ q) ~T ≡ F (T:F)~F ≡ T
![Page 24: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/24.jpg)
LEGGI DEL COMPLEMENTO (1) p ∨(~p ∧ q) ≡ p ∨ q (Complemento) p ∧(~p ∨ q) ≡ p ∧ q
Prova (semantica) di p ∨(~p ∧ q) ≡ p ∨ qp q ~p (p∨q) (~p ∧ q) p ∨(~p ∧ q)
F F T F F F
F T T T T T
T F F T F T
T T F T F T
![Page 25: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/25.jpg)
LEGGI DEL COMPLEMENTO (2) p ∨(~p ∧ q) ≡ p ∨ q (Complemento) p ∧(~p ∨ q) ≡ p ∧ q
Prova (calcolo) di p ∨(~p ∧ q) ≡ p ∨ qp ∨(~p ∧ q)
≡ {Distributività}(p ∨ ~p) ∧ (p ∨ q)
≡ {Terzo escluso}T ∧ (p ∨ q)
≡ {Unità}(p ∨ q)
![Page 26: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/26.jpg)
LEGGI DELL’IMPLICAZIONE (1) (p ⇒ q) ≡ (~p ∨ q) (elim- ⇒)
p q (p ⇒ q) ~p (~p ∨ q)F F T T TF T T T TT F F F FT T T F T
![Page 27: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/27.jpg)
LEGGI DELL’IMPLICAZIONE (2) (p ≡ q) ≡ (p ⇒ q) ∧ (q ⇒ p) (elim- ≡ ) (p ⇐ q) ≡ (q ⇒ p) (elim-⇐)
Tutte le tautologie del calcolo proposizionale sono derivabili dall’insieme delle leggi visto
Conviene comunque, per motivi di espressività e compattezza delle definizioni, introdurre leggi derivate che corrispondono ad assodate tecniche di dimostrazione.
![Page 28: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/28.jpg)
Insiemi funzionalmente completi di connettivi logici Abbiamo introdotto 5 connettivi logici:
Connettivo Forma simbolica Operazione corrispondentenot ~ p negazioneand p ∧ q congiunzioneor p ∨ q disgiunzionese p allora q p ⇒ q implicazionep se e solo se q p ≡ q equivalenzap se q p ⇐ q conseguenza
Alcuni possono essere definiti in termini di altri. Molti sottoinsiemi sono "funzionalmente completi", cioè permettono di derivare tutti gli altri.
Esercizio: Mostrare che {∧, ~}, {∨, ~} e {⇒, ~} sono funzionalmente completi
![Page 29: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/29.jpg)
LEGGI DERIVATE (p ∧ (p ⇒ q)) ⇒ q (modus ponens)
(p ⇒ q) ≡ (∼q ⇒ ∼p) (controposizione)
(p ⇒ ∼p) ≡ ∼p (reductio ad absurdum)
((p ⇒ q) ∧ (q ⇒ r)) ⇒ (p ⇒ r) (transitività)
![Page 30: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/30.jpg)
CORRETTEZZA DEL MODUS PONENS(p ∧ (p ⇒ q)) ⇒ q
≡ {Elim-⇒ }~(p ∧ (p ⇒ q)) ∨ q
≡ {Elim- ⇒}~(p ∧ (~p ∨ q)) ∨ q
≡ {DeMorgan}~p ∨ ~(~p ∨ q) ∨ q
≡ {DeMorgan}~p ∨ (~~p ∧ ~q) ∨ q
≡ {Complemento}~p ∨ ~q ∨ q
≡ {TerzoEscluso}~p ∨ T
≡ {Zero}T
![Page 31: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/31.jpg)
ESERCIZI DEL TEST (1) Si consideri la frase: in un dato campione di
pazienti, chi ha fatto uso di droghe pesanti ha utilizzato anche droghe leggere.
Formalizziamo l'enunciato. Introduciamo due "identificatori"(nomi) per le
proposizioni nella frase:dp= fare uso di droghe pesanti.dl = fare uso di droghe leggere
Qundi la frase dice: dp ⇒ dl
![Page 32: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/32.jpg)
Quali delle seguenti osservazioni relative ai pazienti del campione si può dedurre da essa?
Formalizziamole:1)Chi ha fatto uso di droghe leggere ha utilizzato anche
droghe pesanti dl ⇒ dp2)Chi non ha fatto uso di droghe leggere non ha
utilizzato droghe pesanti ∼dl ⇒ ∼dp3)Chi non ha fatto uso di droghe pesanti non ha
utilizzato droghe leggere ∼dp ⇒ ∼dl4)Chi non ha fatto uso di droghe leggere ha utilizzato
droghe pesanti ∼dl ⇒ dp
ESERCIZI DEL TEST (1)
![Page 33: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/33.jpg)
Quali delle seguenti osservazioni relative ai pazienti del campione si può dedurre da essa?
Per ognuna delle osservazioni, vediamo se è una conseguenza tautologica della premessa dp ⇒ dl. Quindi vediamo quali delle seguenti sono tautologie:1) (dp ⇒ dl) ⇒ (dl ⇒ dp)2) (dp ⇒ dl) ⇒ (∼dl ⇒ ∼dp)3) (dp ⇒ dl) ⇒ (∼dp ⇒ ∼dl)4) (dp ⇒ dl) ⇒ (∼dl ⇒ dp)
ESERCIZI DEL TEST (1)
![Page 34: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/34.jpg)
Per vedere se sono tautologie, possiamo cercare di dimostrare che sono equivalenti a T. Sfruttando l'intuizione, vediamo che : 1) (dp ⇒ dl) ⇒ (dl ⇒ dp) non è tautologia:
sia dl = T, dp = F2) (dp ⇒ dl) ⇒ (∼dl ⇒ ∼dp) è tautologia:
usiamo controposizione e eliminazione di ≡3) (dp ⇒ dl) ⇒ (∼dp ⇒ ∼dl) ...4) (dp ⇒ dl) ⇒ (∼dl ⇒ dp) ...
ESERCIZI DEL TEST (1)
![Page 35: Logica per la programmazione - Dipartimento di Informatica](https://reader033.fdocument.pub/reader033/viewer/2022051315/627a66c431267b5679552a4d/html5/thumbnails/35.jpg)
ESERCIZI DEL TEST (2) Se Corrado va al cinema, allora ci va anche
Antonio Corrado ⇒ Antonio
Condizione necessaria perché Antonio vada al cinema è che ci vada Bruno Antonio ⇒ Bruno
(Corrado ⇒ Antonio) ∧ (Antonio ⇒ Bruno)⇒ {transitività}Corrado ⇒ Bruno