ELEMENTI DI LOGICA PER IL CORSO DI LAUREA IN INFORMATICA Anno 2006-2007 Prof. Giangiacomo Gerla Università di Salerno INTRODUZIONE La logica matematica studia le "asserzioni", cioè le espressioni linguistiche per cui abbia senso dire se siano vere o false. Supponiamo che invece di dire che una asserzione è vera affermiamo che ha “valore di verità 1”, invece di dire che è falsa affermiamo che ha “valore di verità 0”. Allora il primo compito della logica matematica è: stabilire come il valore di verità di una asserzione composta possa essere calcolato a partire dai valori di verità delle asserzioni che la compongono Questa parte della logica viene chiamata semantica. Il secondo compito della logica matematica è quello di formalizzare e riprodurre le forme di ragionamento dell'essere umano, cioè quei processi mentali che permettono di ottenere a partire da asserzioni considerate vere (premesse) nuove asserzioni (conclusioni). Questa parte della logica prende il nome di teoria della dimostrazione. Ecco alcuni esempi di ragionamento che vengono studiati. Se ritengo che siano vere le asserzioni "2 è pari" e "3 non è pari" allora appare naturale affermare anche che l'asserzione "2 è pari e 3 non è pari" sia vera. Un altro esempio di ragionamento è il seguente: se ritengo che siano vere le asserzioni tutti gli uomini sono mortali e Socrate è un uomo allora posso concludere che Socrate è mortale. In origine la logica matematica si è occupata solo dei ragionamenti di tipo matematico in quanto il suo scopo doveva essere quello di dare un sicuro fondamento alla matematica. Attualmente la logica matematica si occupa dell’attività del ragionare in tutti i contesti, anche in quello della vita quotidiana. In tale senso è diventato un settore importante dell'informatica utile in modo particolare per l'intelligenza artificiale. Ad esempio le idee della logica matematica sono importanti per: - i sistemi esperti, - il linguaggio di programmazione Prolog - i data-base intelligenti - la robotica. Inoltre la logica matematica entra come “un pezzo” importante di ogni linguaggio di programmazione. Infatti in ogni linguaggio di programmazione esistono istruzioni condizionate del tipo Se A è vero allora fai B altrimenti fai C. Oppure, visto che usualmente ci si riferisce alla lingua inglese: IF A THEN B ELSE C. In questo caso B e C sono procedure da applicare mentre la lettera A denota una asserzione e quindi appartiene all’universo della logica. In questo brevissimo corso ci limiteremo a dare qualche elemento su due importanti parti della logica matematica: il calcolo proposizionale ed il calcolo dei predicati. INDICE Introduzione CAPITOLO 1 Il calcolo proposizionale. 1. 2. 3. 4. 5. 6. 7. 8. 9. Il calcolo proposizionale Linguaggio e semantica del calcolo proposizionale Equivalenze logiche e conseguenze logiche Un esempio di intelligenza artificiale: i tableaux semantici Il teorema di completezza funzionale La logica per costruire calcolatori: le porte logiche Circuiti in serie ed in parallelo Un esempio: le addizionatrici a base due Logiche a più valori di verità (solo lettura) CAPITOLO 2 Il calcolo dei predicati 1. Linguaggi formali e grammatiche 2. I linguaggi del calcolo dei predicati: l’alfabeto 3. I linguaggi del calcolo dei predicati: le formule 4. Interpretazioni di un linguaggio 5. Conseguenze logiche ed equivalenze logiche 6. L'aritmetica è indecidibile: non esiste un interprete tale che … 7. Strutture algebriche, reticoli, algebre di Boole (facoltativo) 8. Relazioni e grafi (facoltativo) 9. Relazioni d'ordine, relazioni di equivalenza (facoltativo) 10. Quozienti, l'algebra di Boole delle formule (facoltativo) 1. 2. 3. 4. 5. 6. CAPITOLO 3 Trasformare formule e dedurre da teorie Sistemi di trasformazione Riduzioni a forma normale nel calcolo proposizionale Riduzione a forma normale nel calcolo dei predicati Eliminazione dei quantificatori esistenziali I sistemi deduttivi Dimostrare tramite un calcolatore: la programmazione logica Programma. Linguaggio e semantica del calcolo proposizionale. Il teorema di completezza funzionale e forme normali. Il metodo dei tableaux semantici. Porte logiche. Logiche a più valori di verità. Linguaggi formali e grammatiche. Strutture algebriche, reticoli algebre di Boole. Relazioni. Relazioni d'ordine, relazioni di equivalenza. Quozienti, l'algebra di Boole delle formule. Linguaggi del calcolo dei predicati. Interpretazioni di un linguaggio. Conseguenze logiche ed equivalenze logiche. Sistemi di trasformazione. Riduzioni a forma normale nel calcolo proposizionale. Riduzione a forma normale nel calcolo dei predicati. Eliminazione dei quantificatori esistenziali. I sistemi deduttivi. Calcolare con gli insiemi: operatori algebrici e punti uniti. Dimostrare tramite un calcolatore: i programmi. Bibliografia. Negli appunti dal corso può essere trovato tutto quanto detto a lezione. Possono essere scaricate anche alcune delle prove date negli anni precedenti. Per un maggior approfondimento un classico manuale di logica matematica è: - Mendelson, Introduzione alla logica matematica, Boringhieri. che risulta anche un po' noioso e troppo formale. Libri più vicini all'informatica sono: - S. J. Russell, P. Norving, Intelligenza Artificiale, Ed. Prentice Hall International. - M. L. Schagrin, W. J. Rapaport, R.R. Dipert, Logica e computer, Ed. McGraw-Hill. - A. Asperti, A. Ciabattoni, Logica a Informatica, Ed. McGraw-Hill. Per una affascinante e semplice storia della logica in rapporto all'intelligenza artificiale: - Y. Castelfranchi, O. Stock, Macchine come noi, Ed. Laterza. In particolare se si vogliono approfondire gli studi nella direzione della programmazione logica: - J.W.Lloyd, Fondamenti di programmazione logica, Franco Muzzio Ed. (in inglese esiste una edizione aggiornata e migliorata di tale libro).