Introduzione alla logica matematica Paolo Bison Fondamenti di

Introduzione alla logica matematica
Logica matematica
Paolo Bison
formalizzazione dei meccanismi di ragionamento
la logica studia proposizioni
una proposizione può essere vera o falsa
logica a due valori di verità
Fondamenti di Informatica
A.A. 2007/08
Università di Padova
lucidi basati su note della prof. S. Badaloni
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.1
Formalizzazione
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.2
Logica proposizionale
sintassi
in che modo scrivere le proposizioni
semantica
significato delle proposizioni
P1: Se fa caldo ed è umido allora pioverà
P2: Se è umido ed è estate allora fa caldo
P3: adesso è umido
P4: adesso è estate
si vuole verificare:
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.3
P5: pioverà
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.4
Logica proposizionale
Logica proposizionale
Ad ogni proposizione elementare viene associata una variabile
proposizionale
La rappresentazione per l’esempio è
F1: A ∧ B → D
A = fa caldo
F2: B ∧C → A
B = è umido
F3: B
C = è estate
F4: C
D = pioverà
si vuole dimostrare che da F1-F4 segue logicamente:
F5: D
∧ rappresenta la congiunzione (and)
→ rappresenta la implicazione logica
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.5
Sintassi
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.6
Connettivi logici
La logica proposizionale tratta formule.
Una formula è composta da:
formule atomiche o atomi (A, B, C, ...)
connettivi logici
parentesi ( )
¬ not
negazione
∨ or
disgiunzione
∧ and
congiunzione
→ if then
implicazione
↔ if and only if
bi-implicazione
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.7
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.8
Formule ben formate
Priorità dei connettivi
Una formula è ben formata (FBF) se e solo se essa è
ottenibile applicando le seguenti regole:
1. un atomo è una FBF
2. se F è una FBF, allora (¬F) è una FBF
3. se F e G sono FBF, allora lo sono anche (F ∨ G),
(F ∧ G), (F → G) e (F ↔ G)
Stabilendo un ordinamento tra i connettivi è possibile eliminare
alcune parentesi. L’ordine adottato è il seguente:
1. ¬
2. ∧, ∨
3. →, ↔
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.9
Semantica
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.10
Valore di verità di una formula
la semantica della logica proposizionale richiede
l’introduzione dei valori di verità
B = {T, F}
dare una interpretazione vuol dire trovare una funzione
V : F → {T, F}
essendo F l’insieme delle formule ben formate FBF del
Calcolo Proposizionale.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.11
Si può calcolare il valore di verità di una espressione del
Calcolo Proposizionale a partire
dai valore di verità delle formule atomiche che la
compongono (interpretazioni) e
dalle tabelle di verità dei connettivi logici.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.12
Tautologie
Tabelle di verità dei connettivi logici
A B (¬A) (A ∧ B) (A ∨ B) (A → B) (A ↔ B)
Alcune formule sono vere in tutte le interpretazioni.
T T
F
T
T
T
T
T F
F
F
T
F
F
F T
T
F
T
T
F
P
Q
(P → Q)
F F
T
F
F
T
T
T
T
T
T
T
T
F
F
F
T
F
T
T
F
T
F
F
T
F
T
((P ∧ (P → Q)) → Q)
P ∧ (P → Q) ((P ∧ (P → Q)) → Q)
Tautologie o formule valide.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.13
Contraddizioni
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.14
Decidibilità della logica proposizionale
formule che sono false in tutte le interpretazioni.
Ogni formula è finita e contiene un numero finito di formule
atomiche:
quindi è sempre possibile determinare se essa è valida,
inconsistente o ne’ l’uno ne’ l’altro.
La logica proposizionale è decidibile.
((P → Q) ∧ P) ∧ (¬Q)
P Q (P → Q) (¬Q) ((P → Q) ∧ P) ∧ (¬Q)
T
T
T
F
F
T
F
F
T
F
F
T
T
F
F
F
F
T
T
F
Contraddizioni o formule inconsistenti.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.15
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.16
Equivalenza Logica
Relazioni di equivalenza logica - I
Due formule F e G sono equivalenti, e si indica con
F ≡ G, se e solo se esse hanno lo stesso valore di verità in
tutte le interpretazioni.
Si può dimostrare che F ≡ G se e solo se la formula
(F ↔ G) è una tautologia.
F
≡
F
identità
¬(¬F)
≡
F
doppia negazione
(G ∧ G)
≡
G
idempotenza
(G ∨ G)
≡
G
idempotenza
(G∧T)
≡
G
legge dei neutri
(G∧F)
≡
F
legge dei neutri
(G∨T)
≡
T
legge dei neutri
(G∨F)
≡
G
legge dei neutri
(G ∧ ¬G)
≡
F
esclusione
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.17
Relazioni di equivalenza logica - II
(G ∨ ¬G)
≡
T
((F ∧ G) ∧ H)
≡
((F ∨ G) ∨ H)
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.18
Relazioni di equivalenza logica - III
complementarietà
(F ∨ (F ∧ G))
≡
F
assorbimento
((F ∧ (G ∧ H)
associatività
(F ∧ (F ∨ G))
≡
F
assorbimento
≡
((F ∨ (G ∨ H)
associatività
(F ∨ (¬F ∧ G))
≡
(F ∨ G)
assorbimento
(F ∧ G)
≡
(G ∧ F)
commutatività
(F ∧ (¬F ∨ G))
≡
(F ∧ G)
assorbimento
(F ∨ G)
≡
(G ∨ F)
commutatività
(F → G)
≡
(¬F ∨ G)
(F ∧ (G ∨ H))
≡
((F ∧ G) ∨ (F ∧ H))
distributività
(F → (G → H))
≡
(G → (F → H))
proprietà implicazione
(F ∨ (G ∧ H))
≡
((F ∨ G) ∧ (F ∨ H))
distributività
(F → (G → H))
≡
((F ∧ G) → H)
proprietà implicazione
¬(F ∨ G)
≡
(¬F ∧ ¬G)
legge di De Morgan
(F ↔ G)
≡
((F → G) ∧ (G → F))
¬(F ∧ G)
≡
(¬F ∨ ¬G)
legge di De Morgan
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.19
eliminazione implicazione
doppia implicazione
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.20
Esempio - I
Esempio - IIa
verificare che le seguenti formule sono equivalenti:
(a) (P ∧ Q) → ¬ (P ∧ R)
(b) ¬ (P ∧ Q ∧ R)
(a) (A → B) → ((A → ¬B) → ¬A)
(a)
≡
≡
≡
≡
Verificare se la seguente formula è una tautologia:
(P ∧ Q) → ¬(P ∧ R)
¬(P ∧ Q) ∨ ¬(P ∧ R)
¬(P ∧ Q ∧ P ∧ R)
¬(P ∧ P ∧ Q ∧ R)
¬(P ∧ Q ∧ R)
elimin.impl.
DeMorgan
commutativa
idempotenza
(b)
tabella di verità
A
B
(A → B)
(A → ¬B) ((A → ¬B) → ¬A)
T
T
T
F
T
T
T
F
F
T
F
T
F
T
T
T
T
T
F
F
T
T
T
T
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.21
Esempio - IIb
(a)
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.22
Do it yourself - I
relazione di equivalenza
(A → B) → ((A → ¬B) → ¬A) ≡
((A → B) ∧ ((A → ¬B)) → ¬A)
((¬A ∨ B) ∧ (¬A ∨ ¬B)) → ¬A
¬((¬A ∨ B) ∧ (¬A ∨ ¬B)) ∨ ¬A
¬(¬A ∨ (B ∧ ¬B)) ∨ ¬A
¬(¬A∨F) ∨ ¬A
¬(¬A) ∨ ¬A
A ∨ ¬A
≡
≡
≡
≡
≡
≡
≡
≡ T.
propr. impl.
elim. impl.
elim. impl.
¬P ∧ (P ∨ Q) ∧ (¬ (P ∨ Q) ∨ P) ∧ ¬ (P ∨ Q)
distributiva
doppia neg.
compl.
Si dica se le seguenti espressioni del calcolo proposizionale
sono o non sono equivalenti:
(a) (P ∧ Q) → R
neutri
neutri
Si dica se la seguente formula è una tautologia:
(b) P → ¬ (Q → R)
Si dica se la seguente formula del calcolo proposizionale
((R → T ) ∧ (T → R) ∧ T ) → R
è una contraddizione.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.23
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.24
Tipo logical in Fortran
Semantica operatori logici
insieme dei valori di verità (falso, vero)
a
b
.not. a
a .and. b
a .or. b
a .eqv. b
a .neqv. b
operatori
.not. .and. .or. .eqv. .neqv.
F
F
T
F
F
T
F
F
T
T
F
T
F
T
costanti
le due parole chiave .FALSE. e .TRUE.
T
F
F
F
T
F
T
operatori di confronto
T
T
F
T
T
T
F
<
<= >
>=
/=
==
notazione equivalente
.lt. .le. .gt. .ge. .eq. .ne.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.25
Esempi d’uso
Priorità operatori
ordine dal maggiore al minore
logical :: p,u,q
integer :: x=0,y=10
u= x >=0 .and. x <9 ! ERRATO 0<=x<9
p=.FALSE.;q=x>y;
u=x .gt. y .and. p
u=p .eqv. q ! test uguaglianza per logical,
! errato usare ==
**
* /
+ < <= > >= == /=
.not.
.and.
.or.
.eqv .neqv.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.26
ordine di valutazione:
da sinistra a destra eccetto ** e .not.
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.27
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.28
pari.f90
Do it yourself - II
!
! pari.f90
! data una sequenza, terminata da 0, di numeri positivi in ingresso
! stampa T se sono tutti pari, F altrimenti
program pari
logical :: tuttiPari
integer :: n
tuttiPari=.TRUE.
do
read *,n
if (n<0) then; stop; end if ! dati in ingresso non corretti
if (n==0) then; exit; end if
tuttiPari= tuttiPari .and. n - (n/2)*2 == 0
end do
print *,tuttiPari
end program pari
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.29
esprimere il connettivo xor (or esclusivo) in termini degli altri
connettivi
A
B
A xor B
true
true
false
true
false
true
false
true
true
false false
false
Introduzione alla logica matematica, Paolo Bison, FI07, 2008-01-08 – p.30