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